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?

2voto

Övünç Metin Punkte 124

Hier ist das Beispiel für Swift 3:

var stringToReplace = "This my string"
if let range = stringToReplace.range(of: "my") {
   stringToReplace?.replaceSubrange(range, with: "your")
}

2voto

Blasco73 Punkte 2940

Ich habe diese sehr einfache Funktion implementiert:

func convap (text : String) -> String {
    return text.stringByReplacingOccurrencesOfString("'", withString: "''")
}

Also kannst du schreiben:

let sqlQuery = "INSERT INTO myTable (Field1, Field2) VALUES ('\(convap(value1))','\(convap(value2)')

2voto

Nazariy Vlizlo Punkte 732

Ab iOS 16 könnte wir die neue Methode auf RangeReplaceableCollection replace(_:with:maxReplacements:) verwenden, die Regex als Parameter verwendet, wo wir unsere Anfrage anpassen können.

var myString = "This is my string"
myString.replace(" ", with: "+")

Vergiss aber nicht, import RegexBuilder zu aktivieren, um dies zu ermöglichen

1voto

Juan Boero Punkte 5900

Swift Erweiterung:

extension String {

    func stringByReplacing(replaceStrings set: [String], with: String) -> String {
        var stringObject = self
        for string in set {
            stringObject = self.stringByReplacingOccurrencesOfString(string, withString: with)
        }
        return stringObject
    }

}

Gehen Sie weiter und verwenden Sie es wie let replacedString = yorString.stringByReplacing(replaceStrings: [" ","?","."], with: "+")

Die Geschwindigkeit der Funktion ist etwas, worauf ich nicht sehr stolz sein kann, aber Sie können ein Array von String in einem Durchgang übergeben, um mehr als einen Ersatz durchzuführen.

1voto

duan Punkte 7733

Ich denke, Regex ist der flexibelste und solide Weg:

var str = "This is my string"
let regex = try! NSRegularExpression(pattern: " ", options: [])
let output = regex.stringByReplacingMatchesInString(
    str,
    options: [],
    range: NSRange(location: 0, length: str.characters.count),
    withTemplate: "+"
)
// output: "This+is+my+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