¿Cómo imprimir comillas dobles dentro de ""?


Respuestas:


221

Con una barra invertida antes de la comilla doble que desea insertar en la Cadena:

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

Ahora sentencees:

Dijeron "Está bien", ¿no?

Se llama "escapar" de un carácter: estás usando su valor literal, no será interpretado.


Con Swift 4, alternativamente, puede optar por utilizar el """delimitador para texto literal donde no hay necesidad de escapar:

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

Esto da:

Dijeron "Está bien", ¿no?
Sí, "está bien" es lo que dijeron.


Con Swift 5 puedes usar delimitadores mejorados:

Los literales de cadena ahora se pueden expresar mediante delimitadores mejorados . Una cadena literal con uno o más signos numéricos (#) antes de la cita de apertura trata las barras invertidas y los caracteres de comillas dobles como literales, a menos que estén seguidos por el mismo número de signos numéricos. Utilice delimitadores mejorados para evitar saturar los literales de cadena que contienen muchos caracteres de comillas dobles o barra invertida con escapes adicionales.

Su cadena ahora se puede representar como:

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

Y si desea agregar una variable a su cadena, también debe agregar #después de la barra invertida:

let sentence = #"My "homepage" is \#(url)"#

24

Para completar, de los documentos de Apple :

Los literales de cadena pueden incluir los siguientes caracteres especiales:

  • Los caracteres especiales de escape \ 0 (carácter nulo), \ (barra invertida), \ t (tabulación horizontal), \ n (salto de línea), \ r (retorno de carro), \ "(comillas dobles) y \ '(comillas simples)
  • Un escalar Unicode arbitrario, escrito como \ u {n}, donde n es un número hexadecimal de 1 a 8 dígitos con un valor igual a un punto de código Unicode válido

lo que significa que además de poder escapar del carácter con barra invertida, puede usar el valor Unicode. Las siguientes dos declaraciones son equivalentes:

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

myString ahora contendría:

Me encantan las comillas "innecesarias"


8

Según sus necesidades, puede utilizar uno de los 4 patrones siguientes para imprimir un Swift Stringque contenga comillas dobles.


1. Uso de comillas dobles de escape

Los literales de cadena pueden incluir caracteres especiales como \":

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

2. Usando escalares Unicode

Los literales de cadena pueden incluir un 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. Uso de literales de cadena de varias líneas (requiere Swift 4)

El lenguaje de programación Swift / cadenas y caracteres dice:

Debido a que los literales de cadena de varias líneas utilizan tres comillas dobles en lugar de solo una, puede incluir una comilla doble ( ") dentro de un literal de cadena de varias líneas sin escapar.

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

4. Usar literales de cadena sin formato (requiere Swift 5)

El lenguaje de programación Swift / cadenas y caracteres dice:

Puede colocar un literal de cadena dentro de delimitadores extendidos para incluir caracteres especiales en una cadena sin invocar su efecto. Coloca la cadena entre comillas ( ") y la rodea con signos numéricos ( #). Por ejemplo, al imprimir la cadena literal se #"Line 1\nLine 2"#imprime la secuencia de escape del salto de línea ( \n) en lugar de imprimir la cadena en dos líneas.

let string = #"A string with "double quotes" in it."#
print(string) //prints: A string with "double quotes" in it.
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.