F # - Cuerdas

En F #, el tipo de cadena representa texto inmutable como una secuencia de caracteres Unicode.

Literales de cadena

Los literales de cadena están delimitados por el carácter de comillas (").

Algunos caracteres especiales están ahí para usos especiales como nueva línea, tabulación, etc. Están codificados usando el carácter de barra invertida (\). El carácter de barra invertida y el carácter relacionado forman la secuencia de escape. La siguiente tabla muestra la secuencia de escape admitida por F #.

Personaje Secuencia de escape
Retroceso \segundo
Nueva línea \norte
Retorno de carro \ r
Lengüeta \ t
Barra invertida \\
Comillas \ "
Apóstrofe \ '
Carácter Unicode \ uXXXX o \ UXXXXXXXX (donde X indica un dígito hexadecimal)

Formas de ignorar la secuencia de escape

Las siguientes dos formas hacen que el compilador ignore la secuencia de escape:

  • Usando el símbolo @.
  • Incluyendo la cadena entre comillas triples.

Cuando un literal de cadena está precedido por el símbolo @, se denomina verbatim string. De esa forma, se ignoran todas las secuencias de escape de la cadena, excepto que dos caracteres de comillas se interpretan como un carácter de comillas.

Cuando una cadena está entre comillas triples, también se ignoran todas las secuencias de escape, incluidos los caracteres de comillas dobles.

Ejemplo

El siguiente ejemplo demuestra esta técnica que muestra cómo trabajar con XML u otras estructuras que incluyen comillas incrustadas:

// Using a verbatim string
let xmldata = @"<book author = ""Lewis, C.S"" title = ""Narnia"">"
printfn "%s" xmldata

Cuando compila y ejecuta el programa, produce el siguiente resultado:

<book author = "Lewis, C.S" title = "Narnia">

Operadores básicos en cadenas

La siguiente tabla muestra las operaciones básicas en cadenas:

Valor Descripción
recopilar: (char → cadena) → cadena → cadena Crea una nueva cadena cuyos caracteres son el resultado de aplicar una función específica a cada uno de los caracteres de la cadena de entrada y de concatenar las cadenas resultantes.
concat: cadena → seq <cadena> → cadena Devuelve una nueva cadena creada al concatenar las cadenas dadas con un separador.
existe: (char → bool) → string → bool Comprueba si algún carácter de la cadena satisface el predicado dado.
forall: (char → bool) → string → bool Comprueba si todos los caracteres de la cadena satisfacen el predicado dado.
init: int → (int → cadena) → cadena Crea una nueva cadena cuyos caracteres son el resultado de aplicar una función específica a cada índice y concatenar las cadenas resultantes.
iter: (char → unidad) → cadena → unidad Aplica una función específica a cada carácter de la cadena.
iteri: (int → char → unidad) → cadena → unidad Aplica una función específica al índice de cada carácter de la cadena y al propio carácter.
longitud: cadena → int Devuelve la longitud de la cadena.
mapa: (char → char) → cadena → cadena Crea una nueva cadena cuyos caracteres son el resultado de aplicar una función específica a cada uno de los caracteres de la cadena de entrada.
mapi: (int → char → char) → string → string Crea una nueva cadena cuyos caracteres son el resultado de aplicar una función específica a cada carácter e índice de la cadena de entrada.
replicar: int → cadena → cadena Devuelve una cadena concatenando un número especificado de instancias de una cadena.

Los siguientes ejemplos demuestran los usos de algunas de las funcionalidades anteriores:

Ejemplo 1

La función String.collect construye una nueva cadena cuyos caracteres son el resultado de aplicar una función especificada a cada uno de los caracteres de la cadena de entrada y concatenar las cadenas resultantes.

let collectTesting inputS =
   String.collect (fun c -> sprintf "%c " c) inputS
printfn "%s" (collectTesting "Happy New Year!")

Cuando compila y ejecuta el programa, produce el siguiente resultado:

H a p p y N e w Y e a r !

Ejemplo 2

La función String.concat concatena una secuencia determinada de cadenas con un separador y devuelve una nueva cadena.

let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ]
let ourProducts = String.concat "\n" strings
printfn "%s" ourProducts

Cuando compila y ejecuta el programa, produce el siguiente resultado:

Tutorials Point
Coding Ground
Absolute Classes

Ejemplo 3

El método String.replicate devuelve una cadena concatenando un número específico de instancias de una cadena.

printfn "%s" <| String.replicate 10 "*! "

Cuando compila y ejecuta el programa, produce el siguiente resultado:

*! *! *! *! *! *! *! *! *! *!