F # - Stringhe

In F #, il tipo di stringa rappresenta il testo non modificabile come una sequenza di caratteri Unicode.

Valori letterali stringa

I valori letterali stringa sono delimitati dal carattere virgolette (").

Alcuni caratteri speciali sono disponibili per usi speciali come newline, tab, ecc. Sono codificati utilizzando il carattere backslash (\). Il carattere barra rovesciata e il carattere correlato formano la sequenza di escape. La tabella seguente mostra la sequenza di escape supportata da F #.

Personaggio Sequenza di fuga
Backspace \ b
Nuova linea \ n
Ritorno in carrozza \ r
Tab \ t
Barra rovesciata \\
Virgolette \ "
Apostrofo \ '
Carattere Unicode \ uXXXX o \ UXXXXXXXX (dove X indica una cifra esadecimale)

Modi per ignorare la sequenza di fuga

I due modi seguenti fanno sì che il compilatore ignori la sequenza di escape:

  • Utilizzando il simbolo @.
  • Racchiudere la stringa tra virgolette triple.

Quando una stringa letterale è preceduta dal simbolo @, viene chiamata a verbatim string. In questo modo, tutte le sequenze di escape nella stringa vengono ignorate, ad eccezione del fatto che due virgolette vengono interpretate come una virgoletta.

Quando una stringa è racchiusa tra virgolette triple, vengono ignorate anche tutte le sequenze di escape, inclusi i caratteri delle virgolette doppie.

Esempio

L'esempio seguente mostra questa tecnica che mostra come lavorare con XML o altre strutture che includono virgolette incorporate:

// Using a verbatim string
let xmldata = @"<book author = ""Lewis, C.S"" title = ""Narnia"">"
printfn "%s" xmldata

Quando compili ed esegui il programma, restituisce il seguente output:

<book author = "Lewis, C.S" title = "Narnia">

Operatori di base sulle stringhe

La tabella seguente mostra le operazioni di base sulle stringhe:

Valore Descrizione
raccogliere: (char → string) → string → string Crea una nuova stringa i cui caratteri sono il risultato dell'applicazione di una funzione specificata a ciascuno dei caratteri della stringa di input e della concatenazione delle stringhe risultanti.
concat: stringa → seq <stringa> → stringa Restituisce una nuova stringa creata concatenando le stringhe date con un separatore.
esiste: (char → bool) → string → bool Verifica se qualsiasi carattere della stringa soddisfa il predicato specificato.
forall: (char → bool) → string → bool Verifica se tutti i caratteri nella stringa soddisfano il predicato specificato.
init: int → (int → string) → string Crea una nuova stringa i cui caratteri sono il risultato dell'applicazione di una funzione specificata a ogni indice e della concatenazione delle stringhe risultanti.
iter: (char → unit) → string → unit Applica una funzione specificata a ogni carattere nella stringa.
iteri: (int → char → unit) → string → unit Applica una funzione specificata all'indice di ogni carattere nella stringa e al carattere stesso.
lunghezza: stringa → int Restituisce la lunghezza della stringa.
mappa: (char → char) → string → string Crea una nuova stringa i cui caratteri sono il risultato dell'applicazione di una funzione specificata a ciascuno dei caratteri della stringa di input.
mapi: (int → char → char) → string → string Crea una nuova stringa i cui caratteri sono il risultato dell'applicazione di una funzione specificata a ogni carattere e indice della stringa di input.
replicare: int → string → string Restituisce una stringa concatenando un numero specificato di istanze di una stringa.

I seguenti esempi dimostrano gli usi di alcune delle funzionalità di cui sopra:

Esempio 1

La funzione String.collect crea una nuova stringa i cui caratteri sono il risultato dell'applicazione di una funzione specificata a ciascuno dei caratteri della stringa di input e della concatenazione delle stringhe risultanti.

let collectTesting inputS =
   String.collect (fun c -> sprintf "%c " c) inputS
printfn "%s" (collectTesting "Happy New Year!")

Quando compili ed esegui il programma, restituisce il seguente output:

H a p p y N e w Y e a r !

Esempio 2

La funzione String.concat concatena una determinata sequenza di stringhe con un separatore e restituisce una nuova stringa.

let strings = [ "Tutorials Point"; "Coding Ground"; "Absolute Classes" ]
let ourProducts = String.concat "\n" strings
printfn "%s" ourProducts

Quando compili ed esegui il programma, restituisce il seguente output:

Tutorials Point
Coding Ground
Absolute Classes

Esempio 3

Il metodo String.replicate restituisce una stringa concatenando un numero specificato di istanze di una stringa.

printfn "%s" <| String.replicate 10 "*! "

Quando compili ed esegui il programma, restituisce il seguente output:

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