Comment imprimer des guillemets doubles à l'intérieur de «»?

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:

let sentence = #"My "homepage" is \#(url)"#
Eric Aya
la source
24

Pour être complet, à partir de la documentation Apple :

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"

myString contiendrait maintenant:

J'aime les guillemets "inutiles"

Daniel
la source
8

Selon vos besoins, vous pouvez utiliser l'un des 4 modèles suivants afin d'imprimer un Swift Stringcontenant 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 \":

let string = "A string with \"double quotes\" in it."
print(string) //prints: A string with "double quotes" in it.

2. Utilisation des scalaires Unicode

Les littéraux de chaîne peuvent inclure une valeur scalaire Unicode écrite comme suit \u{n}:

let string = "A string with \u{22}double quotes\u{22} in it."
print(string) //prints: A string with "double quotes" in it.

3. Utilisation de littéraux de chaîne multiligne (nécessite Swift 4)

Le langage de programmation / chaînes et caractères Swift indique:

É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)

Le langage de programmation / chaînes et caractères Swift indique:

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.
Imanou Petit
la source