Compartir a través de


Cadenas (F#)

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

Comentarios

Los literales de cadena se delimitan mediante caracteres de comillas ("). El carácter de barra diagonal inversa (\) se utiliza para codificar determinados caracteres especiales. La barra diagonal inversa y el carácter siguiente juntos se denominan secuencia de escape. En la tabla siguiente se muestran las secuencias de escape admitidas para los literales de cadena de F#.

Carácter

Secuencia de escape

Retroceso

\b

Nueva línea

\n

Retorno de carro

\r

Tab

\t

Barra diagonal inversa

\\

Comillas

\"

Apóstrofo

\'

Carácter Unicode

\uXXXX o \UXXXXXXXX (donde X indica un dígito hexadecimal)

Si va precedido por el símbolo @, el literal es una cadena textual. Esto significa que se omiten todas las secuencias de escape, pero dos caracteres de comillas se interpretan como uno solo.

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

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

Al trabajar con cadenas, F# conserva los caracteres de salto de línea tal como los encuentra, por lo que si está leyendo una cadena de un archivo con avance de línea (LF o \n) o retorno de carro y avance de línea (CRLF o \r\n) como carácter de nueva línea, estos se mantienen.

Se puede obtener acceso a los caracteres individuales de una cadena mediante la sintaxis de matriz, tal y como se indica a continuación.

printfn "%c" str1.[1]

El resultado es b

También se pueden extraer subcadenas mediante la sintaxis de segmentos de matriz, tal y 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

Se pueden representar cadenas ASCII mediante matrices de bytes sin signo, del tipo byte[]. Debe agregarse el sufijo B a un literal de cadena para indicar que se trata de una cadena ASCII. Los literales de cadena ASCII utilizados con matrices de bytes admiten las mismas secuencias de escape que las cadenas Unicode, salvo 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

Las cadenas se pueden concatenar de dos maneras: mediante el operador + o el operador ^. El operador + mantiene la compatibilidad con las características de administración de cadenas de .NET Framework.

En el siguiente ejemplo, se muestra la concatenación de cadenas.

let string1 = "Hello, " + "world"

Clase String

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

Con la propiedad Chars de String, se puede obtener acceso a los caracteres individuales de una cadena especificando un índice, tal y como se muestra en el siguiente código.

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

Módulo String

El módulo String del espacio de nombres FSharp.Core incluye otras funcionalidades para la administración de cadenas. Para obtener más información, vea Core.String (Módulo de F#).

Vea también

Referencia

String

Otros recursos

Referencia del lenguaje F#