F # - Strings
Em F #, o tipo de string representa o texto imutável como uma sequência de caracteres Unicode.
Literais de string
Literais de string são delimitados pelo caractere aspas (").
Alguns caracteres especiais existem para usos especiais como nova linha, tabulação, etc. Eles são codificados usando o caractere barra invertida (\). O caractere de barra invertida e o caractere relacionado formam a sequência de escape. A tabela a seguir mostra a sequência de escape com suporte por F #.
Personagem | Sequência de fuga |
---|---|
Backspace | \ b |
Nova linha | \ n |
Retorno de carruagem | \ r |
Aba | \ t |
Barra invertida | \\ |
Aspa | \ " |
Apóstrofo | \ ' |
Caractere Unicode | \ uXXXX ou \ UXXXXXXXX (onde X indica um dígito hexadecimal) |
Maneiras de ignorar a sequência de fuga
As duas maneiras a seguir fazem o compilador ignorar a sequência de escape -
- Usando o símbolo @.
- Envolvendo a string entre aspas triplas.
Quando um literal de string é precedido pelo símbolo @, é chamado de verbatim string. Dessa forma, todas as sequências de escape na string são ignoradas, exceto que dois caracteres de aspas são interpretados como um caractere de aspa.
Quando uma string é colocada entre aspas triplas, todas as sequências de escape também são ignoradas, incluindo caracteres de aspas duplas.
Exemplo
O exemplo a seguir demonstra essa técnica mostrando como trabalhar com XML ou outras estruturas que incluem aspas incorporadas -
// Using a verbatim string
let xmldata = @"<book author = ""Lewis, C.S"" title = ""Narnia"">"
printfn "%s" xmldata
Quando você compila e executa o programa, ele produz a seguinte saída -
<book author = "Lewis, C.S" title = "Narnia">
Operadores básicos em strings
A tabela a seguir mostra as operações básicas em strings -
Valor | Descrição |
---|---|
coletar: (char → string) → string → string | Cria uma nova string cujos caracteres são os resultados da aplicação de uma função especificada a cada um dos caracteres da string de entrada e da concatenação das strings resultantes. |
concat: string → seq <string> → string | Retorna uma nova string feita pela concatenação das strings fornecidas com um separador. |
existe: (char → bool) → string → bool | Testa se algum caractere da string satisfaz o predicado fornecido. |
forall: (char → bool) → string → bool | Testa se todos os caracteres na string satisfazem o predicado fornecido. |
init: int → (int → string) → string | Cria uma nova string cujos caracteres são os resultados da aplicação de uma função especificada a cada índice e da concatenação das strings resultantes. |
iter: (char → unidade) → string → unidade | Aplica uma função especificada a cada caractere da string. |
iteri: (int → char → unidade) → string → unidade | Aplica uma função especificada ao índice de cada caractere na string e ao próprio caractere. |
comprimento: string → int | Retorna o comprimento da string. |
mapa: (char → char) → string → string | Cria uma nova string cujos caracteres são os resultados da aplicação de uma função especificada a cada um dos caracteres da string de entrada. |
mapi: (int → char → char) → string → string | Cria uma nova string cujos caracteres são os resultados da aplicação de uma função especificada a cada caractere e índice da string de entrada. |
replicar: int → string → string | Retorna uma string concatenando um número especificado de instâncias de uma string. |
Os exemplos a seguir demonstram o uso de algumas das funcionalidades acima -
Exemplo 1
A função String.collect cria uma nova string cujos caracteres são os resultados da aplicação de uma função especificada a cada um dos caracteres da string de entrada e da concatenação das strings resultantes.
let collectTesting inputS =
String.collect (fun c -> sprintf "%c " c) inputS
printfn "%s" (collectTesting "Happy New Year!")
Quando você compila e executa o programa, ele produz a seguinte saída -
H a p p y N e w Y e a r !
Exemplo 2
A função String.concat concatena uma determinada sequência de strings com um separador e retorna uma nova string.
let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ]
let ourProducts = String.concat "\n" strings
printfn "%s" ourProducts
Quando você compila e executa o programa, ele produz a seguinte saída -
Tutorials Point
Coding Ground
Absolute Classes
Exemplo 3
O método String.replicate retorna uma string concatenando um número especificado de instâncias de uma string.
printfn "%s" <| String.replicate 10 "*! "
Quando você compila e executa o programa, ele produz a seguinte saída -
*! *! *! *! *! *! *! *! *! *!