Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Тип string представляет неизменяемый текст в виде последовательности символов Юникода.
string является псевдонимом для System.String в .NET.
Замечания
Строковые литералы разделяются символом кавычки (") . Символ обратной косой черты (\) используется для кодирования определенных специальных символов. Обратная косая черта и следующий символ вместе называются escape-последовательностью. Escape-последовательности, поддерживаемые в строковых литералах F#, показаны в следующей таблице.
| Персонаж | escape-последовательность |
|---|---|
| Предупреждение | \a |
| Бэкспейс | \b |
| Подача формы | \f |
| Новая линия | \n |
| Возврат каретки | \r |
| вкладка | \t |
| Вертикальная вкладка | \v |
| Обратная косая черта | \\ |
| Кавычка | \" |
| Апостроф | \' |
| Символ Юникода |
\DDD (где D указывает десятичную цифру; диапазон от 000 до 255; например, \231 = "ç") |
| Символ Юникода |
\xHH (где H указывает шестнадцатеричную цифру; диапазон 00 – FF; например, \xE7 = "ç") |
| Символ Юникода |
\uHHHH (UTF-16) (где H указывает шестнадцатеричную цифру; диапазон 0000 – FFFF; например, \u00E7 = "ç") |
| Символ Юникода |
\U00HHHHHH (UTF-32) (где H указывает шестнадцатеричную цифру; диапазон от 000000 до 10FFFF; например, \U0001F47D = "👽") |
Это важно
\DDD Escape-последовательность — десятичная нотация, а не восьмеричная нотация, как и в большинстве других языков. Таким образом, цифры 8 и 9 допустимы, а последовательность \032 представляет пробел (U+0020), в то время как та же точка кода в восьмеричной нотации будет \040.
Замечание
Ограничен диапазоном от 0 до 255 (0xFF), \DDD последовательности и \x escape-последовательности фактически являются набором символов ISO-8859-1 , так как это соответствует первым 256 точкам кода Юникода.
Подробные строки
Если предшествует символ @, литерал является подробной строкой. Объявление подробной строки означает, что все escape-последовательности игнорируются, за исключением того, что два символа кавычки интерпретируются как один символ кавычки.
Три кавычки
Кроме того, строка может быть заключена в три кавычки. В этом случае все escape-последовательности игнорируются, включая двойные кавычки. Чтобы указать строку, содержащую внедренную в кавычки строку, можно использовать строку подробной или тройной кавычки. При использовании подробной строки необходимо указать два символа кавычки, чтобы указать один символ кавычки. Если используется строка с тройным кавычками, вы можете использовать одинарные символы кавычки, не анализируя их как конец строки. Этот метод может быть полезным при работе с XML или другими структурами, включающими внедренные кавычки.
// Using a verbatim string
let xmlFragment1 = @"<book author=""Milton, John"" title=""Paradise Lost"">"
// Using a triple-quoted string
let xmlFragment2 = """<book author="Milton, John" title="Paradise Lost">"""
В коде строки, имеющие разрывы строк, принимаются и разрывы строк интерпретируются как кодировка новой строки, используемая в источнике, если только символ обратной косой черты не является последним символом перед разрывом строки. При использовании символа обратной косой черты в следующей строке в начале пробела игнорируется. Следующий код создает строку str1 со значением "abc\ndef" и строкой str2 , которая имеет значение "abcdef".
let str1 =
"abc
def"
let str2 =
"abc\
def"
Индексирование строк и срезы
Доступ к отдельным символам в строке можно получить с помощью синтаксиса, подобного массиву. В следующих примерах используются [] для индексирования строк. Этот синтаксис был представлен в F# 6.0. Можно также использовать .[] для индексирования строк во всех версиях. Новый синтаксис предпочтителен.
printfn "%c" str1[1]
Результат выглядит так: b.
Можно извлечь подстроки с помощью синтаксиса среза массива, как показано в следующем коде.
printfn "%s" str1[0..2]
printfn "%s" str2[3..5]
Выходные данные выглядят следующим образом.
abc
def
Строки ASCII можно представлять массивами незначенных байтов, введите byte[]. Вы добавляете суффикс в строковый литерал B , чтобы указать, что это строка ASCII. Строковые литералы ASCII, используемые с массивами байтов, поддерживают те же escape-последовательности, что и строки Юникода, за исключением escape-последовательностей Юникода.
// "abc" interpreted as a Unicode string.
let str1: string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray: byte[] = "abc"B
Строковые операторы
Оператор + можно использовать для объединения строк, обеспечения совместимости с функциями обработки строк .NET Framework. В следующем примере показана объединение строк.
let string1 = "Hello, " + "world"
Класс String
Поскольку тип строки в F# на самом деле является типом .NET Framework System.String , все System.String члены доступны.
System.String
+ включает оператор, который используется для объединения строк, Length свойства и Chars свойства, который возвращает строку в виде массива символов Юникода. Дополнительные сведения о строках см. в разделе System.String.
Используя Chars свойство System.String, вы можете получить доступ к отдельным символам в строке, указав индекс, как показано в следующем коде.
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
Строковый модуль
Дополнительные функции для обработки строк включаются в String модуль в FSharp.Core пространстве имен. Дополнительные сведения см. в разделе "Строковый модуль".