Veja minha resposta que mostra até 4 maneiras diferentes de imprimir uma Stringinstância que contém aspas duplas.
Imanou Petit
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:
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"
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)
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.
String
instância que contém aspas duplas.Respostas:
Com uma barra invertida antes da aspa dupla que você deseja inserir na String:
Agora
sentence
é:É 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:Isto dá:
Com o Swift 5, você pode usar delimitadores aprimorados:
Sua string agora pode ser representada como:
E se você quiser adicionar uma variável à sua string, você também deve adicionar
#
após a barra invertida:fonte
Para completar, nos documentos da Apple :
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:
myString
agora conteria:fonte
De acordo com as suas necessidades, você pode usar um dos 4 padrões a seguir para imprimir um Swift
String
que contenha aspas duplas.1. Usando aspas duplas de escape
Literais de string podem incluir caracteres especiais, como
\"
:2. Usando escalares Unicode
Literais de string podem incluir valor escalar Unicode escrito como
\u{n}
:3. Usando literais de string de várias linhas (requer Swift 4)
Os estados da linguagem / strings e caracteres de programação Swift :
4. Usando literais de string brutos (requer Swift 5)
o estados da linguagem / strings e caracteres de programação Swift :
fonte