Ich habe eine Funktion erstellt, die in Swift 3.0 eine RegularExpression
generiert. Ich bin nah dran, was ich will, aber der Backslash verursacht mir eine Menge Ärger.Verwenden einer switch-Anweisung zum Erstellen eines Regulären Ausdrucks in Swift 3
Ich habe mir Swift Documentation angesehen und ich dachte, das Ändern des "\" zu \u{005C}
oder u{005C}
würde das Problem lösen, aber es tut es nicht.
Hier ist das Array ich meine Regex Erzeugungsfunktion Fütterung:
var letterArray = ["a","","a","","","","","","",""]
Hier ist der relevante Teil meiner Methode:
var outputString = String()
// getMinimumWordLength returns 3
let minimumWordLength = getMinimumWordLength(letterArray: letterArray)
// for the array above, maximumWordLength returns 10
let maximumWordLength = letterArray.count
var index = 0
for letter in letterArray {
if index < minimumWordLength {
if letter as! String != "" {
outputString = outputString + letter.lowercased
} else {
// this puts an extra \ in my regex
outputString = outputString + "\\w" // first \ is an escape character, 2nd one gets read
// this puts an extra backslash in, too
// outputString = outputString + "\u{005C}w"
}
}
index += 1
}
outputString = outputString + ("{\(minimumWordLength),\(maximumWordLength)}$/")
return outputString
Meine gewünschte Ausgabe ist:
a\wa{3,10}$/
Meine tatsächliche Ausgabe ist:
a\\wa{3,10}$/
Wenn jemand Vorschläge hat, was ich beschmutze, begrüße ich sie. Danke fürs Lesen.
Ich weiß nicht, was Sie versuchen, aber Ihr Code gibt die gewünschte Ausgabe. Das einzige, was ich gemacht habe, war, die runden Klammern nach 'lowcased' einzufügen:' outputString = outputString + letter.lowercased() ' –
Fügen Sie' print (outputString) 'hinzu und sehen Sie, was Sie bekommen. (Ich benötigte den Fix, der von Code Different angezeigt wird.) – OOPer