Stringhe (F#)

Il tipo string rappresenta testo non modificabile, sotto forma di una sequenza di caratteri Unicode.Il tipo string è un alias dell'elemento String in .NET Framework.

Note

I valori letterali stringa vengono delimitati dalle virgolette (").Il carattere barra rovesciata (\) viene utilizzato per codificare determinati caratteri speciali.La barra rovesciata e il carattere successivo sono noti come sequenza di escape.Le sequenze di escape supportate nei valori letterali stringa F# sono illustrate nella tabella seguente.

Carattere

Sequenza di escape

Backspace

\b

Nuova riga

\n

Ritorno a capo

\r

Tab

\t

Barra rovesciata

\\

Virgolette

\"

Apostrofo

\'

Carattere Unicode

\uXXXX o \UXXXXXXXX (dove X indica una cifra esadecimale)

Se preceduto dal simbolo @, il valore letterale è una stringa verbatim.Qualsiasi sequenza di escape viene dunque ignorata, con l'eccezione dei due caratteri di virgolette che vengono interpretati come un solo carattere di virgolette.

Inoltre, una stringa può essere racchiusa tra virgolette triple.In questo caso, tutte le sequenze di escape vengono ignorate, inclusi i caratteri di virgolette doppie.Per specificare una stringa contenente una stringa tra virgolette incorporate, è possibile utilizzare una stringa verbatim o una stringa triplo-tra virgolette.Se si utilizza una stringa verbatim, è necessario specificare due virgolette doppie per indicare un carattere di virgolette singole.Se si utilizza una stringa triplo-tra virgolette, è possibile utilizzare i caratteri della virgoletta singola di senza loro analizzate durante la fine della stringa.Questa tecnica può essere utile quando si utilizzano XML o altre strutture che includono le virgolette incorporate.

// 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">"""

Nel codice vengono accettate le stringhe in cui sono presenti interruzioni di riga, interpretate letteralmente come nuove righe, a meno che un carattere barra rovesciata non sia l'ultimo carattere prima dell'interruzione di riga.In questo caso lo spazio vuoto all'inizio della riga successiva viene ignorato.Il codice seguente consente di creare una stringa str1 con valore "abc\n def" e una stringa str2 con valore "abcdef".

let str1 = "abc
     def"
let str2 = "abc\
     def"

È possibile accedere ai singoli caratteri in una stringa mediante una sintassi analoga a quella delle matrici, come indicato di seguito.

printfn "%c" str1.[1]

L'output è b.

In alternativa, è possibile estrarre le sottostringhe utilizzando la sintassi di sezione delle matrici, come indicato nel codice seguente.

printfn "%s" (str1.[0..2])
printfn "%s" (str2.[3..5])

L'output è indicato di seguito.

abc
def

È possibile rappresentare le stringhe ASCII con matrici di byte senza segno, di tipo byte[].Aggiungendo il suffisso B a un valore letterale stringa, è possibile indicare che si tratta di una stringa ASCII.I valori letterali stringa ASCII utilizzati con le matrici di byte supportano le stesse sequenze di escape delle stringhe Unicode, ad eccezione delle sequenze di escape Unicode.

// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array. 
let bytearray : byte[] = "abc"B 

Operatori di stringa

È possibile concatenare le stringhe in due modi, con l'operatore + o con l'operatore ^.L'operatore + garantisce la compatibilità con le funzionalità di gestione delle stringhe .NET Framework.

Nell'esempio seguente viene illustrata una concatenazione di stringhe.

let string1 = "Hello, " + "world"

Classe String

Poiché il tipo stringa in F# è in effetti un tipo String .NET Framework, sono disponibili tutti i membri String,tra cui l'operatore +, utilizzato per concatenare le stringhe, la proprietà Length e la proprietà Chars, che restituisce la stringa come matrice di caratteri Unicode.Per ulteriori informazioni sulle stringhe, vedere String.

Utilizzando la proprietà Chars di String, è possibile accedere ai singoli caratteri di una stringa specificando un indice, come indicato nel codice riportato di seguito.

let printChar (str : string) (index : int) =
    printfn "First character: %c" (str.Chars(index))

Modulo String

Nello spazio dei nomi FSharp.Core del modulo String sono disponibili funzionalità aggiuntive per la gestione delle stringhe.Per ulteriori informazioni, vedere Modulo Core.String (F#).

Vedere anche

Riferimenti

String

Altre risorse

Riferimenti per il linguaggio F#