Voir ma réponse qui montre jusqu'à 4 façons différentes d'imprimer une Stringinstance contenant des guillemets doubles.
Imanou Petit
Réponses:
221
Avec une barre oblique inverse avant le guillemet double que vous souhaitez insérer dans la chaîne:
let sentence ="They said \"It's okay\", didn't they?"
Maintenant sentencec'est:
Ils ont dit "C'est bon", n'est-ce pas?
C'est ce qu'on appelle "échapper" un caractère: vous utilisez sa valeur littérale, il ne sera pas interprété.
Avec Swift 4, vous pouvez également choisir d'utiliser le """délimiteur pour le texte littéral où il n'est pas nécessaire de s'échapper:
let sentence = """
They said "It's okay", didn't they?
Yes, "okay" is what they said.
"""
Cela donne:
Ils ont dit "C'est bon", n'est-ce pas?
Oui, "d'accord" est ce qu'ils ont dit.
Avec Swift 5, vous pouvez utiliser des délimiteurs améliorés:
Les littéraux de chaîne peuvent désormais être exprimés à l'aide de délimiteurs améliorés . Un littéral de chaîne avec un ou plusieurs signes numériques (#) avant le guillemet ouvrant traite les barres obliques inverses et les guillemets doubles comme des littéraux à moins qu'ils ne soient suivis du même nombre de signes numériques. Utilisez des délimiteurs améliorés pour éviter d'encombrer les littéraux de chaîne contenant de nombreux guillemets ou barres obliques inversées avec des échappements supplémentaires.
Votre chaîne peut maintenant être représentée par:
let sentence =#"They said "It's okay", didn't they?"#
Et si vous voulez ajouter une variable à votre chaîne, vous devez également ajouter #après la barre oblique inverse:
Les littéraux de chaîne peuvent inclure les caractères spéciaux suivants:
Les caractères spéciaux échappés \ 0 (caractère nul), \ (barre oblique inverse), \ t (tabulation horizontale), \ n (saut de ligne), \ r (retour chariot), \ "(guillemet double) et \ '(guillemet simple)
Un scalaire Unicode arbitraire, écrit comme \ u {n}, où n est un nombre hexadécimal de 1 à 8 chiffres avec une valeur égale à un point de code Unicode valide
ce qui signifie qu'en plus de pouvoir échapper le caractère avec une barre oblique inverse, vous pouvez utiliser la valeur unicode. Les deux déclarations suivantes sont équivalentes:
let myString ="I love \"unnecessary\" quotation marks"let myString ="I love \u{22}unnecessary\u{22} quotation marks"
Étant donné que les littéraux de chaîne multiligne utilisent trois guillemets doubles au lieu d'un seul, vous pouvez inclure un guillemet double ( ") à l'intérieur d'un littéral de chaîne multiligne sans l'échapper.
let string ="""
A string with "double quotes" in it.
"""
print(string)//prints: A string with "double quotes"in it.
4. Utilisation de littéraux de chaîne bruts (nécessite Swift 5)
Vous pouvez placer un littéral de chaîne dans des délimiteurs étendus pour inclure des caractères spéciaux dans une chaîne sans appeler leur effet. Vous placez votre chaîne entre guillemets ( ") et l'entourez de signes dièse ( #). Par exemple, l'impression du littéral de chaîne #"Line 1\nLine 2"#imprime la séquence d'échappement de saut de ligne ( \n) plutôt que l'impression de la chaîne sur deux lignes.
let string =#"A string with "double quotes" in it."#
print(string)//prints: A string with "double quotes"in it.
String
instance contenant des guillemets doubles.Réponses:
Avec une barre oblique inverse avant le guillemet double que vous souhaitez insérer dans la chaîne:
Maintenant
sentence
c'est:C'est ce qu'on appelle "échapper" un caractère: vous utilisez sa valeur littérale, il ne sera pas interprété.
Avec Swift 4, vous pouvez également choisir d'utiliser le
"""
délimiteur pour le texte littéral où il n'est pas nécessaire de s'échapper:Cela donne:
Avec Swift 5, vous pouvez utiliser des délimiteurs améliorés:
Votre chaîne peut maintenant être représentée par:
Et si vous voulez ajouter une variable à votre chaîne, vous devez également ajouter
#
après la barre oblique inverse:la source
Pour être complet, à partir de la documentation Apple :
ce qui signifie qu'en plus de pouvoir échapper le caractère avec une barre oblique inverse, vous pouvez utiliser la valeur unicode. Les deux déclarations suivantes sont équivalentes:
myString
contiendrait maintenant:la source
Selon vos besoins, vous pouvez utiliser l'un des 4 modèles suivants afin d'imprimer un Swift
String
contenant des guillemets doubles.1. Utilisation de guillemets doubles échappés
Les littéraux de chaîne peuvent inclure des caractères spéciaux tels que
\"
:2. Utilisation des scalaires Unicode
Les littéraux de chaîne peuvent inclure une valeur scalaire Unicode écrite comme suit
\u{n}
:3. Utilisation de littéraux de chaîne multiligne (nécessite Swift 4)
Le langage de programmation / chaînes et caractères Swift indique:
4. Utilisation de littéraux de chaîne bruts (nécessite Swift 5)
Le langage de programmation / chaînes et caractères Swift indique:
la source