Cadeias
O string
tipo representa texto imutável como uma sequência de caracteres Unicode. string
é um alias para System.String
no .NET.
Observações
Os literais de cadeia de caracteres são delimitados pelo caractere aspas ("). O caractere de barra invertida ( \ ) é usado para codificar determinados caracteres especiais. A barra invertida e o próximo personagem juntos são conhecidos como uma sequência de fuga. As sequências de escape suportadas em literais de cadeia de caracteres F# são mostradas na tabela a seguir.
Caráter | Sequência de fuga |
---|---|
Alerta | \a |
Espaço traseiro | \b |
Feed de formulários | \f |
Nova linha | \n |
Retorno de carro | \r |
Separador | \t |
Separador vertical | \v |
Barra invertida | \\ |
Aspas | \" |
Apóstrofo | \' |
Caractere Unicode | \DDD (onde D indica um dígito decimal; intervalo de 000 - 255; por exemplo, \231 = "ç") |
Caractere Unicode | \xHH (onde H indica um dígito hexadecimal; intervalo de 00 - FF; por exemplo, \xE7 = "ç") |
Caractere Unicode | \uHHHH (UTF-16) (onde H indica um dígito hexadecimal; intervalo de 0000 - FFFF; por exemplo, \u00E7 = "ç") |
Caractere Unicode | \U00HHHHHH (UTF-32) (onde H indica um dígito hexadecimal; intervalo de 000000 - 10FFFF; por exemplo, \U0001F47D = "👽") |
Importante
A \DDD
sequência de escape é a notação decimal, não a notação octal como na maioria das outras línguas. Portanto, dígitos e são válidos8
, e uma sequência de representa um espaço (U+0020), enquanto esse mesmo ponto de \032
código na notação octal seria \040
.9
Nota
Sendo restrito a um intervalo de 0 - 255 (0xFF), as \DDD
sequências e \x
escape são efetivamente o conjunto de caracteres ISO-8859-1 , uma vez que corresponde aos primeiros 256 pontos de código Unicode.
Cordas Verbatim
Se precedido pelo símbolo @, o literal é uma string literal. Declarar uma cadeia de caracteres literal significa que todas as sequências de escape são ignoradas, exceto que dois caracteres de aspas são interpretados como um caractere de aspas.
Cordas triplas cotadas
Além disso, uma cadeia de caracteres pode ser delimitada por aspas triplas. Nesse caso, todas as sequências de escape são ignoradas, incluindo aspas duplas. Para especificar uma cadeia de caracteres que contenha uma cadeia de caracteres entre aspas incorporada, você pode usar uma cadeia de caracteres literal ou uma cadeia de aspas triplas. Se você usar uma cadeia de caracteres literal, deverá especificar dois caracteres de aspas para indicar um caractere de aspas simples. Se você usar uma cadeia de caracteres com aspas triplas, poderá usar os caracteres de aspas simples sem que eles sejam analisados como o final da cadeia de caracteres. Essa técnica pode ser útil quando você trabalha com XML ou outras estruturas que incluem aspas incorporadas.
// 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">"""
No código, as cadeias de caracteres com quebras de linha são aceitas e as quebras de linha são interpretadas como a codificação de nova linha usada na origem, a menos que um caractere de barra invertida seja o último caractere antes da quebra de linha. O espaço em branco à esquerda na próxima linha é ignorado quando o caractere de barra invertida é usado. O código a seguir produz uma cadeia de caracteres str1
que tem valor "abc\ndef"
e uma cadeia de caracteres str2
que tem valor "abcdef"
.
let str1 =
"abc
def"
let str2 =
"abc\
def"
Indexação e fatiamento de cadeias de caracteres
Você pode acessar caracteres individuais em uma cadeia de caracteres usando sintaxe semelhante a matriz. Os exemplos a seguir usam []
para indexar cadeias de caracteres. Esta sintaxe foi introduzida no F# 6.0. Você também pode usar .[]
para indexar cadeias de caracteres em todas as versões. A nova sintaxe é preferível.
printfn "%c" str1[1]
O resultado é b
.
Ou você pode extrair substrings usando a sintaxe de fatia de matriz, conforme mostrado no código a seguir.
printfn "%s" str1[0..2]
printfn "%s" str2[3..5]
A saída é a seguinte.
abc
def
Você pode representar cadeias de caracteres ASCII por matrizes de bytes não assinados, digite byte[]
. Você adiciona o sufixo B
a um literal de cadeia de caracteres para indicar que é uma cadeia de caracteres ASCII. Os literais de cadeia de caracteres ASCII usados com matrizes de bytes suportam as mesmas sequências de escape que as cadeias de caracteres Unicode, exceto para as sequências 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 cadeia de caracteres
O +
operador pode ser usado para concatenar cadeias de caracteres, mantendo a compatibilidade com os recursos de manipulação de cadeia de caracteres do .NET Framework. O exemplo a seguir ilustra a concatenação de cadeia de caracteres.
let string1 = "Hello, " + "world"
String Classe
Como o tipo de cadeia de caracteres em F# é, na verdade, um tipo .NET Framework System.String
, todos os System.String
membros estão disponíveis. System.String
inclui o +
operador, que é usado para concatenar cadeias de caracteres, a Length
propriedade e a Chars
propriedade, que retorna a cadeia de caracteres como uma matriz de caracteres Unicode. Para obter mais informações sobre cadeias de caracteres, consulte System.String
.
Usando a Chars
propriedade de , você pode acessar os caracteres individuais em uma cadeia de System.String
caracteres especificando um índice, como é mostrado no código a seguir.
let printChar (str: string) (index: int) =
printfn "First character: %c" (str.Chars(index))
Módulo String
A funcionalidade adicional para manipulação de cadeia de caracteres está incluída no String
módulo no FSharp.Core
namespace. Para obter mais informações, consulte String Module.