Chaînes (F#)
Le type string représente le texte immuable en tant que séquence de caractères Unicode. string est un alias pour String dans .NET Framework.
Notes
Les littéraux de chaîne sont délimités par un guillemet ("). La barre oblique inverse (\) est utilisée pour encoder certains caractères spéciaux. La barre oblique inverse et le caractère suivant forment une séquence d'échappement. Les séquences d'échappement prises en charge dans les littéraux de chaîne F# sont répertoriées dans le tableau suivant.
Caractère |
Séquence d'échappement |
---|---|
Retour arrière |
\b |
Saut de ligne |
\n |
Retour chariot |
\r |
Onglet |
\t |
Barre oblique inverse |
\\ |
Guillemet |
\" |
Apostrophe |
\' |
Caractère Unicode |
\uXXXX ou \UXXXXXXXX (où X indique un chiffre hexadécimal) |
S'il est précédé du symbole @, le littéral est une chaîne textuelle. Cela signifie que toute séquence d'échappement est ignorée, sauf que deux caractères de guillemet sont interprétés comme un caractère de guillemet.
En outre, une chaîne peut être placée entre des guillemets triples. Dans ce cas, toutes les séquences d'échappement sont ignorées, notamment des guillemets doubles. Pour spécifier une chaîne qui contient une chaîne entre guillemets incorporées, vous pouvez utiliser une chaîne textuelle ou une chaîne entre triple guillemets. Si vous utilisez une chaîne textuelle, vous devez spécifier deux guillemets pour indiquer un guillemet simple. Si vous utilisez une chaîne entre triple guillemets, vous pouvez utiliser des guillemets simples sans que ceux-ci soient analysés comme fin de la chaîne. Cette technique peut être utile lorsque vous travaillez avec le XML ou d'autres structures qui incluent des guillemets incorporés.
// 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">"""
Dans le code, les chaînes qui ont des sauts de ligne sont acceptées et les sauts de ligne interprétés littéralement comme des sauts de ligne, à moins qu'une barre oblique inverse ne soit le dernier caractère avant le saut de ligne. L'espace blanc de début sur la ligne suivante est ignoré lorsque la barre oblique inverse est utilisée. Le code suivant produit une chaîne str1 qui a la valeur "abc\n def" et une chaîne str2 qui a la valeur "abcdef".
let str1 = "abc
def"
let str2 = "abc\
def"
Vous pouvez accéder aux caractères individuels d'une chaîne à l'aide d'une syntaxe de type tableau, comme suit.
printfn "%c" str1.[1]
Le résultat est b.
Ou vous pouvez extraire des sous-chaînes à l'aide de la syntaxe de découpage de tableau, comme indiqué dans le code suivant.
printfn "%s" (str1.[0..2])
printfn "%s" (str2.[3..5])
La sortie est la suivante.
abc
def
Vous pouvez représenter les chaînes ASCII par des tableaux d'octets non signés, de type byte[]. Vous ajoutez le suffixe B à un littéral de chaîne pour indiquer qu'il s'agit d'une chaîne ASCII. Les littéraux de chaîne ASCII utilisés avec les tableaux d'octets prennent en charge les mêmes séquences d'échappement que les chaînes Unicode, à l'exception des séquences d'échappement Unicode.
// "abc" interpreted as a Unicode string.
let str1 : string = "abc"
// "abc" interpreted as an ASCII byte array.
let bytearray : byte[] = "abc"B
Opérateurs de chaîne
Il existe deux façons de concaténer des chaînes : en utilisant l'opérateur + ou en utilisant l'opérateur ^. L'opérateur + assure la compatibilité avec les fonctionnalités de gestion des chaînes .NET Framework.
L'exemple suivant illustre la concaténation de chaînes.
let string1 = "Hello, " + "world"
Classe String
En F#, le type chaîne étant en fait un type String .NET Framework, tous les membres String sont disponibles. Cela inclut l'opérateur +, qui est utilisé pour concaténer des chaînes, la propriété Length et la propriété Chars, qui retourne la chaîne comme tableau de caractères Unicode. Pour plus d'informations sur les chaînes, consultez String.
En utilisant la propriété Chars de String, vous pouvez accéder aux différents caractères d'une chaîne en spécifiant un index, comme indiqué dans le code suivant.
let printChar (str : string) (index : int) =
printfn "First character: %c" (str.Chars(index))
Module String
Des fonctionnalités supplémentaires pour la gestion des chaînes sont incluses dans le module String dans l'espace de noms FSharp.Core. Pour plus d’informations, consultez Core.String, module (F#).