2017-03-10 8 views
2

Ich versuche, die String.replacingOccurrences zu verwenden, um alle Vorkommen der folgenden Zeichen in Komma zu ändern:Ersetzen Sie Vorkommen rasche regex

#.$[]

aber ich kann es nicht scheinen, um dies zu tun mit dem, was ich haben:

func cleanStr(str: String) -> String { 
    return str.replacingOccurrences(of: "[.#$[/]]", with: ",", options: [.regularExpression]) 
} 

print(cleanStr(str: "me[[email protected]#l.co$m")) // prints "me[[email protected],l,co,m\n" 

Kann mir jemand helfen zu sehen, was ich falsch mache?

Antwort

3

In Ihrem Muster, [.#$[/]] gibt es eine Zeichenklasse Vereinigung, das heißt, sie paßt nur ., #, $ und / Zeichen (eine Kombination von zwei Zeichenklassen, [.#$] und [/]).

In ICU regex, müssen Sie wörtliche eckigen Klammern [ und ] innerhalb einer Zeichenklasse zu entkommen:

"[.#$\\[/\\]]" 

Dieser Code gibt me,[email protected],l,co,m:

func cleanStr(str: String) -> String { 
    return str.replacingOccurrences(of: "[.#$\\[/\\]]", with: ",", options: [.regularExpression]) 
} 
print(cleanStr(str: "me[[email protected]#l.co$m")) 
+0

Sie mein Herr, sind ein verdammter Gott Genius. EIN GENIE! – MarksCode