Ich suche nach einer Möglichkeit, Zeichen in einem Swift String
zu ersetzen.
Beispiel: "Das ist mein String"
Ich würde gerne " " durch "+" ersetzen, um "Das+ist+mein+String" zu erhalten.
Wie kann ich das erreichen?
Ich suche nach einer Möglichkeit, Zeichen in einem Swift String
zu ersetzen.
Beispiel: "Das ist mein String"
Ich würde gerne " " durch "+" ersetzen, um "Das+ist+mein+String" zu erhalten.
Wie kann ich das erreichen?
Weniger ist mir passiert, ich möchte einfach nur ein (Wort oder Zeichen) im String
ändern
Also habe ich das Wörterbuch
verwendet
extension String{
func replace(_ dictionary: [String: String]) -> String{
var result = String()
var i = -1
for (of , with): (String, String)in dictionary{
i += 1
if i<1{
result = self.replacingOccurrences(of: of, with: with)
}else{
result = result.replacingOccurrences(of: of, with: with)
}
}
return result
}
}
Verwendung
let mobil = "+1 (800) 444-9999"
let wörterbuch = ["+": "00", " ": "", "(": "", ")": "", "-": ""]
let mobilErgebnis = mobil.replace(wörterbuch)
print(mobilErgebnis) // 001800444999
Xcode 11 • Swift 5.1
Die mutierende Methode von StringProtocol replacingOccurrences
kann wie folgt implementiert werden:
extension RangeReplaceableCollection where Self: StringProtocol {
mutating func replaceOccurrences(of target: Target, with replacement: Replacement, options: String.CompareOptions = [], range searchRange: Range? = nil) {
self = .init(replacingOccurrences(of: target, with: replacement, options: options, range: searchRange))
}
}
var name = "This is my string"
name.replaceOccurrences(of: " ", with: "+")
print(name) // "This+is+my+string\n"
Seit Swift 2 konformiert sich String
nicht mehr zu SequenceType
. Mit anderen Worten, Sie können nicht mehr durch eine Zeichenkette mit einer for...in
-Schleife iterieren.
Der einfache und schnelle Weg besteht darin, String
in ein Array
umzuwandeln, um von dem Indexvorteil zu profitieren, genau so:
let input = Array(str)
Ich erinnere mich, als ich versuchte, in String
ohne Umwandlung einzusteigen. Ich war wirklich frustriert, dass ich kein gewünschtes Ergebnis finden konnte, und kurz davor war aufzugeben. Aber ich entwickelte meine eigene Lösung und hier ist der vollständige Code der Erweiterung:
extension String {
subscript (_ index: Int) -> String {
get {
String(self[self.index(startIndex, offsetBy: index)])
}
set {
remove(at: self.index(self.startIndex, offsetBy: index))
insert(Character(newValue), at: self.index(self.startIndex, offsetBy: index))
}
}
}
Jetzt können Sie einen einzelnen Zeichen aus einer Zeichenkette lesen und ersetzen, indem Sie den Index verwenden, genau wie Sie es ursprünglich wollten:
var str = "cat"
for i in 0..
``
Es ist ein einfacher und nützlicher Weg, es zu verwenden und das Swift-Zugriffsmodell für Strings zu meistern. Jetzt werden Sie das nächste Mal, wenn Sie durch die Zeichenkette iterieren können, ohne sie in ein Array
umzuwandeln, ein reibungsloses Erlebnis haben.
Probieren Sie es aus und sehen Sie, ob es Ihnen hilft!
``
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.