591 Stimmen

Gibt es einen Weg, um Zeichen in einem Swift String zu ersetzen?

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?

1089voto

Mick MacCallum Punkte 126843

Diese Antwort wurde für Swift 4 & 5 aktualisiert. Wenn Sie immer noch Swift 1, 2 oder 3 verwenden, sehen Sie sich die Änderungshistorie an.

Sie haben ein paar Möglichkeiten. Sie können wie von @jaumard vorgeschlagen vorgehen und replacingOccurrences() verwenden

let aString = "Das ist mein Text"
let newString = aString.replacingOccurrences(of: " ", with: "+", options: .literal, range: nil)

Und wie von @cprcrack unten bemerkt wurde, sind die options- und range-Parameter optional. Wenn Sie also keine Zeichenfolgenvergleichsoptionen angeben oder einen Bereich angeben möchten, in dem die Ersetzung erfolgen soll, benötigen Sie nur Folgendes.

let aString = "Das ist mein Text"
let newString = aString.replacingOccurrences(of: " ", with: "+")

Oder, wenn die Daten in einem bestimmten Format wie diesem vorliegen, bei dem Sie nur Trennzeichen ersetzen, können Sie components() verwenden, um die Zeichenfolge in ein Array aufzuteilen, und dann können Sie die join()-Funktion verwenden, um sie mit einem angegebenen Trennzeichen wieder zusammenzusetzen.

let toArray = aString.components(separatedBy: " ")
let backToString = toArray.joined(separator: "+")

Oder wenn Sie nach einer eleganteren Lösung suchen, die keine API von NSString verwendet, könnten Sie dies verwenden.

let aString = "Einige Suchbegriffe"

let replaced = String(aString.map {
    $0 == " " ? "+" : $0
})

74voto

whitneyland Punkte 10275

Sie können dies verwenden:

let s = "Das ist mein String"
let modified = s.replace(" ", withString:"+")    

Wenn Sie diese Erweiterungsmethode irgendwo in Ihrem Code hinzufügen:

extension String
{
    func replace(target: String, withString: String) -> String
    {
       return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
    }
}

Swift 3:

extension String
{
    func replace(target: String, withString: String) -> String
    {
        return self.replacingOccurrences(of: target, with: withString, options: NSString.CompareOptions.literal, range: nil)
    }
}

69voto

Ben Sullivan Punkte 2025

Swift 3, Swift 4, Swift 5 Lösung

let exampleString = "Beispielstring"

//Lösung wie oben vorgeschlagen in Swift 3.0
let stringToArray = exampleString.components(separatedBy: " ")
let stringFromArray = stringToArray.joined(separator: "+")

//Die schickste Lösung in Swift
let swiftyString = exampleString.replacingOccurrences(of: " ", with: "+")

22voto

jaumard Punkte 8012

Hast du das getestet:

var test = "Das ist mein String"

let ersetzt = test.stringByReplacingOccurrencesOfString(" ", withString: "+", options: nil, range: nil)

19voto

Jaykant Punkte 219
var str = "Das ist mein String"

print(str.replacingOccurrences(of: " ", with: "+"))

Ergebnis

Das+ist+mein+String

CodeJaeger.com

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.

Powered by:

X