ich versuchte hello_world
-helloWorld
dieses Code-Snippet (Swift 3.0) zu ändern: wurdeWie ersetzt man einen String mit seinem Großbuchstaben mit NSRegularExpression in Swift?
import Foundation
let oldLine = "hello_world"
let fullRange = NSRange(location: 0, length: oldLine.characters.count)
let newLine = NSMutableString(string: oldLine)
let regex = try! NSRegularExpression(pattern: "(_)(\\w)", options: [])
regex.replaceMatches(in: newLine, options: [], range: fullRange,
withTemplate: "\\L$2")
Das Ergebnis newLine = "helloLworld"
I "\\L$2"
als Vorlage verwendet, weil ich diese Antwort sah: https://stackoverflow.com/a/20742304/5282792 sagen \L$2
ist das Muster für das Großbuchstabe der zweiten Gruppe in der Ersatzvorlage. Aber es funktionierte nicht in NSRegularExpression
.
So kann ich eine Zeichenfolge mit seinem Großbuchstaben mit einem Ersatzschablonenmuster in NSRegularExpression
ersetzen.
SublimeText verwendet Boost-Regex, das den '\ L'-Operator unterstützt. Swift verwendet ICU, es unterstützt keine Case-Chahing-Operatoren. –
@ WiktorStribiżew So 'NSRegularExpression' unterstützt nichts anderes als' $ num' in der Ersatzvorlage? –
Ein Backslash ist auch ein spezielles Zeichen in ICU-Regex-Ersatzmustern, siehe [* ICU-Benutzerhandbuch: Ersatztext *] (http://www.icu-project.org/userguide/regexp). –