Поделиться через


Строки (F#)

Тип string представляет постоянный текст в виде последовательности символов Юникода.Тип string — это псевдоним для типа String платформы .NET Framework.

Заметки

Строковые литералы отделяются знаком кавычек (").Для кодирования некоторых специальных знаков используется обратная косая черта (\).Обратная косая черта и следующий знак вместе называются escape-последовательностью.В следующей таблице представлены escape-последовательности, поддерживаемые в строковых литералах языка F#.

Знак

Escape-последовательность

Backspace

\b

Новая строка

\n

Возврат каретки

\r

Вкладка

\t

Обратная косая черта

\\

Кавычка

\"

Апостроф

\'

Знак Юникода

\uXXXX или \UXXXXXXXX (где X обозначает шестнадцатеричную цифру)

Если литералу предшествует символ @, литерал является буквальной строкой.Это означает, что любые escape-последовательности игнорируются, кроме двух знаков кавычек, которые рассматриваются как один знак кавычки.

Кроме того, строка может быть заключена triple предложениями кавычки.В этом случае все escape-последовательности игнорируются, включая символы в двойные кавычки.Чтобы указать строку, которая содержит внедренную закавыченную строку, можно использовать дословную строку или втройне-закавыченную строку.При использовании дословную строку, необходимо указать 2 символа кавычки, чтобы указать один знак кавычки.При использовании втройне-закавыченную строку, можно использовать одиночные символы кавычек без их, как анализированными конца строки.Этот метод может быть полезно при работе с 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\n def", и строку str2, имеющую значение "abcdef".

let str1 = "abc
     def"
let str2 = "abc\
     def"

Доступ к отдельным знакам в строке можно получить, используя синтаксис, подобный массиву, как показано ниже.

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# фактически является тип String платформы .NET Framework, доступны все члены класса String,в том числе оператор +, используемый для сцепления строк, свойство Length и свойство Chars, которое возвращает строку в виде массива знаков Юникода.Дополнительные сведения о строках см. в разделе String.

Используя свойство Chars класса String, можно получать доступ к отдельным знакам в строке путем указания индекса, как показано в приведенном ниже коде.

let printChar (str : string) (index : int) =
    printfn "First character: %c" (str.Chars(index))

Модуль String

Дополнительные функции обработки строк включены в модуль String в пространстве имен FSharp.Core.Дополнительные сведения см. в разделе Модуль Core.String (F#).

См. также

Ссылки

String

Другие ресурсы

Справочник по языку F#