Como imprimir aspas duplas dentro de “”?

Respostas:

221

Com uma barra invertida antes da aspa dupla que você deseja inserir na String:

let sentence = "They said \"It's okay\", didn't they?"

Agora sentenceé:

Eles disseram "está tudo bem", não é?

É chamado de "escape" de um caractere: você está usando seu valor literal, ele não será interpretado.


Com o Swift 4, você pode optar por usar o """delimitador para texto literal onde não há necessidade de escapar:

let sentence = """
They said "It's okay", didn't they?
Yes, "okay" is what they said.
"""

Isto dá:

Eles disseram "está tudo bem", não é?
Sim, "ok" foi o que disseram.


Com o Swift 5, você pode usar delimitadores aprimorados:

Literais de string agora podem ser expressos usando delimitadores aprimorados . Uma string literal com um ou mais sinais numéricos (#) antes da aspa inicial trata as barras invertidas e os caracteres de aspas duplas como literais, a menos que sejam seguidos pelo mesmo número de sinais numéricos. Use delimitadores aprimorados para evitar literais de string desordenados que contêm muitos caracteres de aspas duplas ou barra invertida com escapes extras.

Sua string agora pode ser representada como:

let sentence = #"They said "It's okay", didn't they?"#

E se você quiser adicionar uma variável à sua string, você também deve adicionar #após a barra invertida:

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

Para completar, nos documentos da Apple :

Literais de string podem incluir os seguintes caracteres especiais:

  • Os caracteres especiais de escape \ 0 (caractere nulo), \ (barra invertida), \ t (tabulação horizontal), \ n (alimentação de linha), \ r (retorno de carro), \ "(aspas duplas) e \ '(aspas simples)
  • Um escalar Unicode arbitrário, escrito como \ u {n}, onde n é um número hexadecimal de 1 a 8 dígitos com um valor igual a um ponto de código Unicode válido

o que significa que, além de ser capaz de escapar do caractere com barra invertida, você pode usar o valor Unicode. As duas declarações a seguir são equivalentes:

let myString = "I love \"unnecessary\" quotation marks"
let myString = "I love \u{22}unnecessary\u{22} quotation marks"

myString agora conteria:

Eu amo aspas "desnecessárias"

Daniel
fonte
8

De acordo com as suas necessidades, você pode usar um dos 4 padrões a seguir para imprimir um Swift Stringque contenha aspas duplas.


1. Usando aspas duplas de escape

Literais de string podem incluir caracteres especiais, como \":

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

2. Usando escalares Unicode

Literais de string podem incluir valor escalar Unicode escrito como \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. Usando literais de string de várias linhas (requer Swift 4)

Os estados da linguagem / strings e caracteres de programação Swift :

Como os literais de string de várias linhas usam três aspas duplas em vez de apenas uma, você pode incluir aspas duplas (" ) dentro de um literal de string de várias linhas sem escapar dela.

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

4. Usando literais de string brutos (requer Swift 5)

o estados da linguagem / strings e caracteres de programação Swift :

Você pode colocar um literal de string dentro de delimitadores estendidos para incluir caracteres especiais em uma string sem invocar seu efeito. Você coloca sua string entre aspas ( ") e envolve-a com sinais numéricos ( #). Por exemplo, imprimir a string literal #"Line 1\nLine 2"#imprime a seqüência de escape de avanço de linha ( \n) em vez de imprimir a string em duas linhas.

let string = #"A string with "double quotes" in it."#
print(string) //prints: A string with "double quotes" in it.
Imanou Petit
fonte