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?

6voto

amin Punkte 481

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

5voto

Yash Gotecha Punkte 154
var str = "Das ist mein String"
str = str.replacingOccurrences(of: " ", with: "+")
print(str)

4voto

Leo Dabus Punkte 215103

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"

3voto

Tariqul Punkte 2333

Dies ist einfach in Swift 4.2. verwenden Sie einfach replacingOccurrences(of: " ", with: "_") für den Austausch

var myStr = "Das ist mein String"
let ersetzt = myStr.replacingOccurrences(of: " ", with: "_")
print(ersetzt)

3voto

Elserafy Punkte 61

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.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