Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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 se delimitan 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 siguiente carácter se conocen como una 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 |
| Newline | \n |
| Retorno de carro | \r |
| Pestaña | \t |
| Tabulación vertical | \v |
| Barra invertida | \\ |
| 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 000000 - 10FFFF; por ejemplo, \U0001F47D = "👽") |
Importante
La \DDD secuencia de escape es notación decimal, no notación octal como en la mayoría de los demás lenguajes. Por lo tanto, los dígitos y son válidos8, y una secuencia de \032 representa un espacio (U+0020), mientras que ese mismo punto de código en notación octal sería \040.9
Nota:
Restringirse a un intervalo de 0 a 255 (0xFF), las \DDD secuencias de escape y \x son efectivamente el juego de caracteres ISO-8859-1 , ya que coincide con los primeros 256 puntos de código Unicode.
Cadenas textuales
Si va precedido por el símbolo @, el literal es una cadena textual. Declarar una cadena textual significa que se omiten las secuencias de escape, salvo que dos caracteres de comillas se interpretan como un carácter de comillas.
Cadenas triples entre comillas
Además, una cadena puede incluirse 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 triple entre comillas. Si usa una cadena textual, debe especificar dos caracteres de comillas para indicar un carácter de comillas simples. Si usa una cadena entre comillas triples, puede usar los caracteres de comillas simples 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 como la nueva codificación de línea usada en el origen, 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 de 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 un valor "abc\ndef" y una cadena str2 que tiene el valor "abcdef".
let str1 =
"abc
def"
let str2 =
"abc\
def"
Indexación y segmentación de cadenas
Puede acceder a caracteres individuales en una cadena mediante la sintaxis similar a la matriz. En los ejemplos siguientes se usa [] para indexar cadenas. Esta sintaxis se introdujo en F# 6.0. También puede usar .[] para indexar cadenas en todas las versiones. Se prefiere la nueva sintaxis.
printfn "%c" str1[1]
La salida es b.
O bien, puede extraer subcadenas mediante la sintaxis del 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 mediante 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 características de control de cadenas de .NET Framework. 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 de .NET Framework System.String , todos los System.String miembros están disponibles.
System.String incluye el + operador , que se usa para concatenar cadenas, la Length propiedad y la Chars propiedad , que devuelve la cadena como una matriz de caracteres Unicode. Para obtener más información sobre las cadenas, vea System.String.
Mediante el uso de la Chars propiedad de System.String, puede tener acceso a los caracteres individuales de una cadena especificando un índice, como se muestra en el código siguiente.
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
Módulo string
En el módulo del espacio de nombres se incluye funcionalidad adicional para el StringFSharp.Core control de cadenas. Para obtener más información, vea Módulo de cadenas.