Как вывести двойные кавычки внутри «»?

98

Может кто-нибудь подскажет, как я могу напечатать что-то следующим образом "с" двойными кавычками.

"Двойные кавычки"

Рахул Сонвейн
источник
См. Мой ответ, в котором показано до 4 различных способов печати Stringэкземпляра, содержащего двойные кавычки.
Imanou Petit 02

Ответы:

227

С обратной косой чертой перед двойной кавычкой, которую вы хотите вставить в строку:

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

Сейчас sentenceэто:

Они сказали: «Все в порядке», не так ли?

Это называется «экранирование» символа: вы используете его буквальное значение, оно не будет интерпретировано.


В Swift 4 вы также можете использовать """разделитель для буквального текста, где нет необходимости экранировать:

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

Это дает:

Они сказали: «Все в порядке», не так ли?
Да, «хорошо» - вот что они сказали.


В Swift 5 вы можете использовать расширенные разделители:

Строковые литералы теперь можно выражать с помощью расширенных разделителей . Строковый литерал с одним или несколькими числовыми знаками (#) перед открывающей кавычкой обрабатывает символы обратной косой черты и двойные кавычки как литералы, если за ними не следует одинаковое количество числовых знаков. Используйте расширенные разделители, чтобы не загромождать строковые литералы, которые содержат много двойных кавычек или символов обратной косой черты с дополнительными escape-символами.

Теперь ваша строка может быть представлена ​​как:

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

И если вы хотите добавить переменную в свою строку, вы также должны добавить #после обратной косой черты:

let sentence = #"My "homepage" is \#(url)"#
Эрик Айя
источник
24

Для полноты из документов Apple :

Строковые литералы могут включать следующие специальные символы:

  • Экранированные специальные символы \ 0 (нулевой символ), \ (обратная косая черта), \ t (горизонтальная табуляция), \ n (перевод строки), \ r (возврат каретки), \ "(двойная кавычка) и \ '(одинарная кавычка)
  • Произвольный скаляр Unicode, записываемый как \ u {n}, где n - шестнадцатеричное число из 1–8 цифр, значение которого равно допустимой кодовой точке Unicode.

это означает, что помимо возможности экранировать символ с помощью обратной косой черты, вы можете использовать значение Unicode. Следующие два утверждения эквивалентны:

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

myString теперь будет содержать:

Люблю "ненужные" кавычки

Даниэль
источник
10

В соответствии с вашими потребностями вы можете использовать один из 4 следующих шаблонов для печати Swift String, содержащего двойные кавычки.


1. Использование экранированных двойных кавычек

Строковые литералы могут включать специальные символы, такие как \":

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

2. Использование скаляров Unicode

Строковые литералы могут включать скалярное значение Unicode, записанное как \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. Использование многострочных строковых литералов (требуется Swift 4)

Язык программирования Swift / Строки и символы гласит:

Поскольку многострочные строковые литералы используют три двойные кавычки вместо одной, вы можете включить двойную кавычку ( ") внутри многострочного строкового литерала, не экранируя его.

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

4. Использование необработанных строковых литералов (требуется Swift 5)

Язык программирования Swift / Строки и символы гласит:

Вы можете поместить строковый литерал в расширенные разделители, чтобы включить специальные символы в строку, не вызывая их эффекта. Вы "заключаете строку в кавычки ( ) и заключаете ее в цифровые знаки ( #). Например, при печати строкового литерала #"Line 1\nLine 2"#выводится escape-последовательность перевода строки ( \n), а не строка через две строки.

let string = #"A string with "double quotes" in it."#
print(string) //prints: A string with "double quotes" in it.
Иману Пети
источник