Share via


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.

Además, una cadena se puede agregar a comillas triples. En este caso, todas las secuencias de escape se omiten, incluidos los caracteres de comillas. Para especificar una cadena que contenga una cadena entre comillas incrustada, puede utilizar una cadena textual o una cadena triple-citada. Si utiliza una cadena textual, debe especificar dos caracteres de comillas para indicar un carácter de comilla simple. Si utiliza una cadena triple-citada, puede utilizar los caracteres de comillas simples sin ellos que son analizadas como el final de la cadena. Esta técnica puede ser útil al trabajar con XML u otras estructuras que contienen 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 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\n def" y una cadena str2 con el valor "abcdef".

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

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]

La salida 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#