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 -

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