Cadenas

El string tipo representa texto inmutable como una secuencia de caracteres Unicode. string es un alias de System.String en .NET.

Observaciones

Los literales de cadena están delimitados por el carácter de comillas ("). El carácter de barra diagonal inversa ( \ ) se usa para codificar determinados caracteres especiales. La barra diagonal inversa y el carácter siguiente juntos se conocen como secuencia de escape. Las secuencias de escape admitidas en literales de cadena de F# se muestran en la tabla siguiente.

Carácter Secuencia de escape
Alerta \a
Retroceso \b
Avance de página \f
Nueva línea \n
Retorno de carro \r
Pestaña \t
Tabulación vertical \v
Barra diagonal inversa \\
Comillas \"
Apóstrofo \'
carácter Unicode \DDD (donde D indica un dígito decimal; intervalo de 000 - 255; por ejemplo, = \231 "ç")
carácter Unicode \xHH (donde H indica un dígito hexadecimal; intervalo de 00 - FF; por ejemplo, = \xE7 "ç")
carácter Unicode \uHHHH (UTF-16) (donde H indica un dígito hexadecimal; intervalo de 0000 - FFFF; por ejemplo, \u00E7 = "ç")
carácter Unicode \U00HHHHHH (UTF-32) (donde H indica un dígito hexadecimal; intervalo de 0000000 a 10FFFF; por ejemplo, \U0001F47D = " 👽 ")

Importante

La \DDD secuencia de escape es la notación decimal, no la notación octal como en la mayoría de los demás idiomas. Por lo tanto, los dígitos y son válidos, y una secuencia de representa un espacio 8 9 \032 (U+0020), mientras que ese mismo punto de código en la notación octal sería \040 .

Nota

Al restringirse a un intervalo de 0 a 255 (0xFF), las secuencias de escape y son de hecho el juego de caracteres \DDD \x ISO-8859-1, ya que coincide con los primeros 256 puntos de código Unicode.

Cadenas textuales

Si va precedida del símbolo @ , el literal es una cadena textual. Esto significa que las secuencias de escape se omiten, salvo que dos caracteres de comillas se interpretan como un carácter de comillas.

Cadenas entre comillas triples

Además, una cadena puede ir entre comillas triples. En este caso, se omiten todas las secuencias de escape, incluidos los caracteres de comillas dobles. Para especificar una cadena que contiene una cadena entre comillas incrustada, puede usar una cadena textual o una cadena entre comillas triples. Si usa una cadena textual, debe especificar dos caracteres de comillas para indicar un carácter de comilla simple. Si usa una cadena de comillas triples, puede usar los caracteres de comilla simple sin que se analicen como el final de la cadena. Esta técnica puede ser útil cuando se trabaja con XML u otras estructuras que incluyen comillas incrustadas.

// 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">"""

En el código, las cadenas que tienen saltos de línea se aceptan y los saltos de línea se interpretan literalmente como nuevas líneas, a menos que un carácter de barra diagonal inversa sea el último carácter antes del salto de línea. El espacio en blanco inicial en la línea siguiente se omite cuando se usa el carácter de barra diagonal inversa. El código siguiente genera una cadena str1 que tiene el valor y una cadena que tiene el valor "abc\ndef" str2 "abcdef" .

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

Indexación ylicación de cadenas

Puede acceder a caracteres individuales de una cadena mediante la sintaxis de tipo matriz, como se muestra a continuación.

printfn "%c" str1[1]

La salida es b.

O bien, puede extraer subcadenas mediante la sintaxis de segmento de matriz, como se muestra en el código siguiente.

printfn "%s" str1[0..2]
printfn "%s" str2[3..5]

La salida es la siguiente.

abc
def

Puede representar cadenas ASCII por matrices de bytes sin signo, escriba byte[] . Agregue el sufijo B a un literal de cadena para indicar que es una cadena ASCII. Los literales de cadena ASCII usados con matrices de bytes admiten las mismas secuencias de escape que las cadenas Unicode, excepto las secuencias de escape Unicode.

// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B

Operadores de cadena

El + operador se puede usar para concatenar cadenas, manteniendo la compatibilidad con las .NET Framework de control de cadenas. En el ejemplo siguiente se muestra la concatenación de cadenas.

let string1 = "Hello, " + "world"

String (clase)

Dado que el tipo de cadena de F# es realmente un tipo System.String .NET Framework, todos los System.String miembros están disponibles. Esto incluye el operador , que se usa para concatenar cadenas, la propiedad y la propiedad , que devuelve la cadena como una matriz + Length de caracteres Chars Unicode. Para obtener más información sobre las cadenas, vea System.String .

Mediante el uso de la propiedad de , puede acceder a los caracteres individuales de una cadena especificando un índice, como se Chars muestra en el código System.String siguiente.

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

Módulo de cadenas

En el módulo del espacio de nombres se incluye funcionalidad adicional para el control de String FSharp.Core cadenas. Para obtener más información, vea String Module.

Vea también