Zobacz moją odpowiedź, która pokazuje do 4 różnych sposobów drukowania Stringwystąpienia zawierającego podwójne cudzysłowy.
Imanou Petit
Odpowiedzi:
227
Z odwrotnym ukośnikiem przed podwójnym cudzysłowem, który chcesz wstawić do ciągu:
let sentence = "They said \"It's okay\", didn't they?"
Teraz sentencejest:
Powiedzieli: „W porządku”, prawda?
Nazywa się to „ucieczką” znaku: używasz jego wartości literalnej, nie zostanie ona zinterpretowana.
Dzięki Swift 4 możesz alternatywnie użyć """separatora dla dosłownego tekstu, gdy nie ma potrzeby ucieczki:
let sentence = """
They said "It's okay", didn't they?
Yes, "okay" is what they said.
"""
To daje:
Powiedzieli: „W porządku”, prawda?
Tak, powiedzieli „w porządku”.
W Swift 5 możesz używać ulepszonych separatorów:
Literały ciągów można teraz wyrazić za pomocą rozszerzonych ograniczników . Literał łańcuchowy z co najmniej jednym znakiem liczbowym (#) przed cudzysłowem otwierającym traktuje ukośniki odwrotne i znaki podwójnego cudzysłowu jako literały, chyba że następuje po nich taka sama liczba znaków liczbowych. Użyj rozszerzonych separatorów, aby uniknąć zaśmiecania literałów ciągu, które zawierają wiele znaków podwójnego cudzysłowu lub ukośnika odwrotnego z dodatkowymi znakami ucieczki.
Twój ciąg może być teraz przedstawiony jako:
let sentence = #"They said "It's okay", didn't they?"#
A jeśli chcesz dodać zmienną do swojego ciągu, powinieneś również dodać #po odwrotnym ukośniku:
Literały ciągów mogą zawierać następujące znaki specjalne:
Znaki specjalne ze zmianą znaczenia \ 0 (znak null), \ (ukośnik lewy), \ t (tabulator poziomy), \ n (znak nowego wiersza), \ r (powrót karetki), \ "(cudzysłów podwójny) i \ '(cudzysłów pojedynczy)
Dowolny skalar Unicode, zapisywany jako \ u {n}, gdzie n jest liczbą szesnastkową od 1 do 8 cyfr o wartości równej poprawnemu punktowi kodowemu Unicode
co oznacza, że oprócz możliwości ucieczki znaku za pomocą odwrotnego ukośnika, możesz użyć wartości Unicode. Następujące dwa stwierdzenia są równoważne:
let myString = "I love \"unnecessary\" quotation marks"let myString = "I love \u{22}unnecessary\u{22} quotation marks"
Ponieważ wielowierszowe literały ciągów używają trzech podwójnych cudzysłowów zamiast tylko jednego, można umieścić podwójny cudzysłów ( ") wewnątrz wielowierszowego literału ciągu bez zmiany znaczenia.
let string = """
A string with "double quotes" in it.
"""print(string) //prints: A string with "double quotes" in it.
4. Korzystanie z nieprzetworzonych literałów ciągu (wymaga języka Swift 5)
Możesz umieścić literał ciągu w rozszerzonych ogranicznikach, aby dołączyć znaki specjalne do ciągu bez wywoływania ich efektu. Umieszczasz ciąg w cudzysłowie ( ") i otaczasz go znakami liczbowymi ( #). Na przykład wypisanie literału ciągu #"Line 1\nLine 2"#drukuje sekwencję ucieczki przed przejściem do wiersza ( \n) zamiast wypisywać ciąg w dwóch wierszach.
let string = #"A string with "double quotes" in it."#
print(string) //prints: A string with "double quotes" in it.
String
wystąpienia zawierającego podwójne cudzysłowy.Odpowiedzi:
Z odwrotnym ukośnikiem przed podwójnym cudzysłowem, który chcesz wstawić do ciągu:
let sentence = "They said \"It's okay\", didn't they?"
Teraz
sentence
jest:Nazywa się to „ucieczką” znaku: używasz jego wartości literalnej, nie zostanie ona zinterpretowana.
Dzięki Swift 4 możesz alternatywnie użyć
"""
separatora dla dosłownego tekstu, gdy nie ma potrzeby ucieczki:To daje:
W Swift 5 możesz używać ulepszonych separatorów:
Twój ciąg może być teraz przedstawiony jako:
let sentence = #"They said "It's okay", didn't they?"#
A jeśli chcesz dodać zmienną do swojego ciągu, powinieneś również dodać
#
po odwrotnym ukośniku:let sentence = #"My "homepage" is \#(url)"#
źródło
Aby uzyskać kompletność, z dokumentów Apple :
co oznacza, że oprócz możliwości ucieczki znaku za pomocą odwrotnego ukośnika, możesz użyć wartości Unicode. Następujące dwa stwierdzenia są równoważne:
let myString = "I love \"unnecessary\" quotation marks" let myString = "I love \u{22}unnecessary\u{22} quotation marks"
myString
zawierałby teraz:źródło
W zależności od potrzeb możesz użyć jednego z 4 poniższych wzorców , aby wydrukować Swift
String
zawierający podwójne cudzysłowy.1. Użycie podwójnych cudzysłowów ze zmianą znaczenia
Literały ciągów mogą zawierać znaki specjalne, takie jak
\"
:let string = "A string with \"double quotes\" in it." print(string) //prints: A string with "double quotes" in it.
2. Korzystanie ze skalarów Unicode
Literały ciągów mogą zawierać wartość skalarną Unicode zapisaną jako
\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. Używanie wielowierszowych literałów ciągów (wymaga języka Swift 4)
Plik Swift Programming Language / Strings and Characters stwierdza:
let string = """ A string with "double quotes" in it. """ print(string) //prints: A string with "double quotes" in it.
4. Korzystanie z nieprzetworzonych literałów ciągu (wymaga języka Swift 5)
Swift język programowania / Strings i znaków stwierdza:
let string = #"A string with "double quotes" in it."# print(string) //prints: A string with "double quotes" in it.
źródło