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.
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\r\n def" et une chaîne str2 qui a la valeur "abcdef".
let str1 = "abc
def"
let str2 = "abc\
def"
Lorsque vous travaillez avec des chaînes, F# conserve les caractères de saut de ligne comme ils sont récupérés ; ainsi, si vous lisez une chaîne à partir d'un fichier avec un saut de ligne (LF) ou \ n) ou un retour chariot et un saut de ligne (CRLF ou \ r \ n) comme caractère de saut de ligne, ils sont conservés.
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#).