Mam ciąg „Opcjonalny („ 5 ”)”. Muszę usunąć znak „” otaczający 5. Usunąłem element „Opcjonalny”, wykonując:
text2 = text2.stringByReplacingOccurrencesOfString("Optional(", withString: "", options: NSStringCompareOptions.LiteralSearch, range: nil)
Mam trudności z usunięciem znaków „, ponieważ oznaczają one koniec ciągu w kodzie.
Optional("5")
prawdopodobnie wcześniej coś poszło nie tak, ponieważ jest to opis opcjonalnego ciągu. Bardziej sensowne byłoby rozpakowanie opcjonalnego przed przypisaniem dotext2
, zamiast tekstowego usuwania „Opcjonalny (..)”.Odpowiedzi:
Swift używa odwrotnego ukośnika, aby uniknąć podwójnych cudzysłowów. Oto lista unikniętych znaków specjalnych w Swift:
To powinno działać:
text2 = text2.replacingOccurrences(of: "\\", with: "", options: NSString.CompareOptions.literal, range: nil)
źródło
Swift 3 i Swift 4:
text2 = text2.textureName.replacingOccurrences(of: "\"", with: "", options: NSString.CompareOptions.literal, range:nil)
Najnowsze dokumenty zaktualizowane do Swift 3.0.1 zawierają:
Jeśli potrzebujesz więcej informacji, zajrzyj do oficjalnej dokumentacji tutaj
źródło
Oto zaktualizowana odpowiedź szybkich 3
var editedText = myLabel.text?.replacingOccurrences(of: "\"", with: "")
źródło
Aby usunąć opcjonalne, wystarczy to zrobić
println("\(text2!)")
bo jeśli nie użyjesz "!" przyjmuje opcjonalną wartość text2
Aby usunąć „” z 5, musisz przekonwertować go na NSInteger lub NSNumber easy peasy. Ma "", ponieważ jest to ciąg.
źródło
W końcu udało mi się to zadziałać na placu zabaw, mając wiele znaków, które próbuję usunąć z ciągu:
var otherstring = "lat\" : 40.7127837,\n" var new = otherstring.stringByTrimmingCharactersInSet(NSCharacterSet.init(charactersInString: "la t, \n \" ':")) count(new) //result = 10 println(new) //yielding what I'm after just the numeric portion 40.7127837
źródło
Jeśli chcesz usunąć więcej znaków, na przykład „a”, „A”, „b”, „B”, „c”, „C” z ciągu, możesz to zrobić w ten sposób:
someString = someString.replacingOccurrences(of: "[abc]", with: "", options: [.regularExpression, .caseInsensitive])
źródło
Jak mówi Martin R, Twój ciąg „Opcjonalnie („ 5 ”)” wygląda na to, że zrobiłeś coś złego.
dasblinkenlight odpowie ci, więc jest dobrze, ale dla przyszłych czytelników spróbuję dodać alternatywny kod jako:
if let realString = yourOriginalString { text2 = realString } else { text2 = "" }
text2 w twoim przykładzie wygląda jak String i być może jest już ustawiony na "", ale wygląda na to, że masz gdzieś yourOriginalString typu Optional (String), które nie zostało rzucone lub użyte poprawnie.
Mam nadzieję, że to pomoże niektórym czytelnikom.
źródło
let resultingString = optionalString ?? ""
.Zamiana w celu usunięcia nie jest całkiem logiczna. String.filter pozwala na iterację łańcucha znaków po znaku i zachowanie tylko prawdziwego potwierdzenia.
Swift 4 i 5
var aString = "Optional(\"5\")" aString = aString.filter { $0 != "\"" } > Optional(5)
Lub przedłużyć
var aString = "Optional(\"5\")" let filteredChars = "\"\n\t" aString = aString.filter { filteredChars.range(of: String($0)) == nil } > Optional(5)
źródło
Powiedzmy, że masz ciąg:
var string = "potatoes + carrots"
Chcesz zamienić słowo „ziemniaki” w tym ciągu na „pomidory”
string = string.replacingOccurrences(of: "potatoes", with: "tomatoes", options: NSString.CompareOptions.literal, range: nil)
Jeśli wydrukujesz swój ciąg, będzie to teraz:
"tomatoes + carrots"
Jeśli chcesz całkowicie usunąć słowo ziemniaki z żądła, możesz użyć:
string = string.replacingOccurrences(of: "potatoes", with: "", options: NSString.CompareOptions.literal, range: nil)
Jeśli chcesz użyć innych znaków w swoim żądle, użyj:
Przykład:
string = string.replacingOccurrences(of: "potatoes", with: "dog\'s toys", options: NSString.CompareOptions.literal, range: nil)
Wynik:
"dog's toys + carrots"
źródło
Utworzyłeś wystąpienie text2 jako opcjonalne (np. Var text2: String?). Dlatego w swoim ciągu otrzymujesz parametr Optional („5”). zabrać? i zamień na:
var text2: String = ""
źródło
Jeśli otrzymujesz wynik
Optional(5)
podczas próby wydrukowania wartości5
w opcjonalnym Int lub String , powinieneś najpierw rozpakować wartość:if let value = text { print(value) }
Teraz masz wartość bez ciągu „Optional”, który Swift dodaje, gdy wartość nie została wcześniej rozpakowana.
źródło