Zastosowano poniższy kod, aby oddzielić komponenty ciągów spacjami:
let string = "ABC DEF"
let arrayString = string.components(separatedBy: " ")
i uzyskanie wyjścia ["ABC", "DEF"]
który jest poprawny.
Problem występuje, gdy ciąg zawiera Podwójne cytaty. Dodano tekst w textfield
i używając tekstu textfield
bezpośrednio, aby oddzielić go przestrzenią.
Ciąg w polu tekstowym to Add sfc""
i używając tego samego kodu, uzyskując dane wyjściowe co ["add", "sfc"""]
Czy ktoś może mi pomóc, dlaczego jest dodawany, gdy ciąg znaków zawiera podwójne cudzysłowy. Co mogę zrobić, aby go usunąć?
Odpowiedzi:
3 dla odpowiedzi № 1Tak się dzieje, gdy drukujesz tablicę ciągów.
print(["", ""])
drukuje
["", ""]
Tablica zawiera dwa elementy, które są pustymi ciągami, a jednocześnie dwoma znakami cudzysłowu - ""
- są zamiast tego drukowane. Dzieje się tak, ponieważ jeśli ciąg jest drukowany dosłownie:
[, ]
Nie wyglądałoby to tak „ładnie”. Mniej jasne jest, że istnieją dwa puste łańcuchy.
Możesz myśleć o tym w ten sposób:
Tablice łańcuchowe są drukowane tak, jakby znajdowały się w kodzie
Dlatego są odwrotne ukośniki. Wyobraź sobie, że jeśli to jest w Twoim kodzie, jak napisałeś literał ciągu, który reprezentuje ciąg sfc""
? Ty byś pisał "sfc""""
, dobrze? Więc to właśnie zostało wydrukowane.
Odwrotnych ukośników tak naprawdę tam nie ma, to tylko po to, aby uciec od strun dla jasności.
Wydrukuj każdy element tablicy osobno i zobaczysz, że zniknęły:
print(["", ""][0]) // prints nothing
2 dla odpowiedzi nr 2
Ukośniki odwrotne są dodawane (wirtualnie) podczas używania print
lub String(description:
aby móc wyświetlać podwójne cudzysłowy w ciągu literału. Właściwie one nie istnieją.
Możesz to udowodnić na placu zabaw.