Wie drucke ich doppelte Anführungszeichen in ""?

Antworten:

218

Mit einem Backslash vor dem doppelten Anführungszeichen möchten Sie in den String einfügen:

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

Jetzt sentenceist:

Sie sagten "Es ist okay", nicht wahr?

Es heißt "Escape" eines Zeichens: Wenn Sie seinen Literalwert verwenden, wird er nicht interpretiert.


Mit Swift 4 können Sie alternativ das """Trennzeichen für wörtlichen Text verwenden, bei dem Sie nicht entkommen müssen:

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

Das gibt:

Sie sagten "Es ist okay", nicht wahr?
Ja, "okay" haben sie gesagt.


Mit Swift 5 können Sie erweiterte Trennzeichen verwenden:

String-Literale können jetzt mit erweiterten Trennzeichen ausgedrückt werden . Ein Zeichenfolgenliteral mit einem oder mehreren Zahlenzeichen (#) vor dem Eröffnungszitat behandelt Backslashes und doppelte Anführungszeichen als Literal, es sei denn, ihnen folgt die gleiche Anzahl von Zahlenzeichen. Verwenden Sie erweiterte Trennzeichen, um unübersichtliche Zeichenfolgenliterale zu vermeiden, die viele doppelte Anführungszeichen oder Backslash-Zeichen mit zusätzlichen Escapezeichen enthalten.

Ihre Zeichenfolge kann jetzt wie folgt dargestellt werden:

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

Und wenn Sie Ihrer Zeichenfolge eine Variable hinzufügen möchten, sollten Sie diese auch #nach dem Backslash hinzufügen :

let sentence = #"My "homepage" is \#(url)"#
Eric Aya
quelle
23

Der Vollständigkeit halber aus Apple-Dokumenten :

String-Literale können die folgenden Sonderzeichen enthalten:

  • Die maskierten Sonderzeichen \ 0 (Nullzeichen), \ (Backslash), \ t (horizontale Registerkarte), \ n (Zeilenvorschub), \ r (Wagenrücklauf), \ "(doppeltes Anführungszeichen) und \ '(einfaches Anführungszeichen)
  • Ein beliebiger Unicode-Skalar, geschrieben als \ u {n}, wobei n eine 1–8-stellige Hexadezimalzahl mit einem Wert ist, der einem gültigen Unicode-Codepunkt entspricht

Dies bedeutet, dass Sie nicht nur den Charakter mit einem Backslash umgehen können, sondern auch den Unicode-Wert verwenden können. Die folgenden zwei Aussagen sind äquivalent:

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

myString würde jetzt enthalten:

Ich liebe "unnötige" Anführungszeichen

Daniel
quelle
8

Je nach Bedarf können Sie eines der folgenden 4 Muster verwenden, um einen Swift zu drucken String, der doppelte Anführungszeichen enthält.


1. Verwenden Sie doppelte Anführungszeichen

String-Literale können Sonderzeichen enthalten wie \":

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

2. Verwenden von Unicode-Skalaren

Zeichenfolgenliterale können Unicode-Skalarwerte enthalten, die wie folgt geschrieben sind \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. Verwenden von mehrzeiligen Zeichenfolgenliteralen (erfordert Swift 4)

In der Programmiersprache / den Zeichenfolgen und Zeichen von Swift heißt es:

Da mehrzeilige Zeichenfolgenliterale drei doppelte Anführungszeichen anstelle von nur einem verwenden, können Sie ein doppeltes Anführungszeichen ( ") in ein mehrzeiliges Zeichenfolgenliteral einfügen, ohne es zu umgehen.

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

4. Verwenden von rohen String-Literalen (erfordert Swift 5)

In der Programmiersprache / den Zeichenfolgen und Zeichen von Swift heißt es:

Sie können ein Zeichenfolgenliteral in erweiterte Trennzeichen einfügen, um Sonderzeichen in eine Zeichenfolge aufzunehmen, ohne deren Wirkung aufzurufen. Sie setzen Ihre Zeichenfolge in Anführungszeichen ( ") und umgeben diese mit Zahlenzeichen ( #). Wenn Sie beispielsweise das Zeichenfolgenliteral drucken, wird die #"Line 1\nLine 2"#Zeilenvorschub-Escape-Sequenz ( \n) gedruckt, anstatt die Zeichenfolge über zwei Zeilen zu drucken.

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