Partilhar via


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.Stringcaracteres 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.

Consulte também