2017-11-08 15 views
0

Es gibt keine direkten Methoden in swift zu implementieren und Regex auszuführen.Finden Sie ein Muster innerhalb einer Zeichenfolge und relace es mit einer anderen Zeichenfolge in swift

Ich möchte nach Zahlen innerhalb einer Zeichenfolge suchen und sie durch eine andere Zeichenfolge ersetzen. Für die Ex:

var numberString = "I have 567 horses in my barn" 
var replacementString = "many" 

Wie suche ich für den Indizes der bestehenden Anzahl und relace sie mit meinem String, so dass es wie folgt aussieht:

var finalString = "i have many horses in my barn" 

EDIT: Der Code unter Berücksichtigung der zusätzlichen Formatierung nehmen soll auf Zahlen. so dass auch Strings wie var numberString = „Ich 5,675.00 Pferde in meiner Scheune haben“

bearbeitet werden können

Antwort

4

Es gibt keine geradeaus Methoden in swift zu implementieren und regex auszuführen.

let numberString = "I have 567 horses in my barn" 
let replacementString = "many" 
let finalString = numberString.replacingOccurrences(of: "\\d+", with: replacementString, options: .regularExpression) 
+0

kann der obige Code so geändert werden, dass er Szenarien behandelt, in denen die Zahl formatiert ist. Für zB: Es kann so etwas sein wie let numberString = "Ich habe 5.676,00 Pferde in meiner Scheune" – Vkharb

+0

Dang, es kann manchmal so einfach sein! – LinusGeffarth

+0

Ist das Muster "[0-9.,] +" Ausreichend? – vadian

1

Sie können regex verwenden:

var numberString = "I have 567 horses in my barn" 
var replacementString = "many" 
if let range = numberString.range(of: "([0-9])+", options: .regularExpression, range: nil, locale: nil) { 
    numberString.replaceSubrange(range, with: replacementString) 
} 
//Result: "I have many horses in my barn" 
1
var str = "I have 567 horses in my barn" 

let decimalCharacters = CharacterSet.decimalDigits 

let decimalRange = str.rangeOfCharacter(from: decimalCharacters) 

if decimalRange != nil { 
    print("Numbers found.. Replace this with the replacement string") 
} 

Aus der obigen Verwendung können Sie den Bereich der Anzahl in der Zeichenfolge bekommen. Dann können Sie diese Zeichenfolge durch Ihre Ersatzzeichenfolge ersetzen.

Verwandte Themen