/ / Problem mit durch Leerzeichen getrennter Zeichenfolge, wenn die Zeichenfolge doppelte Anführungszeichen in swift - ios, swift, string enthält

Problem mit durch Trennzeichen getrennter Zeichenfolge, wenn Zeichenfolge doppelte Anführungszeichen in swift enthält - ios, swift, string

Wird unter Code verwendet, um Zeichenfolgenkomponenten durch Leerzeichen zu trennen:

let string = "ABC DEF"
let arrayString = string.components(separatedBy: " ")

und die Ausgabe erhalten ["ABC", "DEF"] welches ist richtig.

Problem tritt auf, wenn Zeichenfolge enthält Anführungszeichen. Fügte den Text in textfield und mit dem Text der textfield direkt mit dem Raum zu trennen.

Die Zeichenfolge im Textfeld ist Add sfc"" und mit dem gleichen Code die Ausgabe wie ["add", "sfc"""]

Kann mir jemand helfen warum wird hinzugefügt, wenn der String doppelte Anführungszeichen enthält. Was kann ich tun, um es zu entfernen?

Antworten:

3 für die Antwort № 1

Dies ist, was passiert, wenn Sie ein String-Array drucken.

print(["", ""])

Drucke

["", ""]

Das Array enthält zwei Elemente, die beide leere Zeichenfolgen und dennoch zwei Anführungszeichen sind. "" - werden stattdessen gedruckt. Dies liegt daran, wenn die Zeichenfolge wörtlich ausgedruckt wird:

[, ]

Es würde nicht so "schön" aussehen. Es ist weniger klar, dass es zwei leere Zeichenfolgen gibt.

Sie können sich das so vorstellen:

String-Arrays werden so gedruckt, als ob sie sich in Ihrem Code befinden

Das ist der Grund, warum es Backslashes gibt. Stellen Sie sich vor, wenn dies in Ihrem Code enthalten ist, wie würden Sie ein Zeichenfolgenliteral schreiben, das die Zeichenfolge darstellt sfc""? Du würdest schreiben "sfc"""", richtig? Das ist es, was gedruckt wurde.

Die Backslashes sind nicht wirklich da, es ist nur, um die Saiten für Klarheit zu entkommen.

Drucken Sie jedes Element des Arrays einzeln aus, und Sie sehen, dass es nicht mehr vorhanden ist:

print(["", ""][0]) // prints nothing

2 für die Antwort № 2

Die Backslashes werden bei der Verwendung (virtuell) hinzugefügt print oder String(description: in der Lage sein, doppelte Anführungszeichen in einer Literalzeichenfolge anzuzeigen. Eigentlich existieren sie nicht.

Sie können es auf einem Spielplatz beweisen.

Bildbeschreibung hier eingeben