将大写转换为标题大小写

Mar*_*moy 4 regex swift

我想快速将大写字符串 (UPPERCASE) 转换为标题大小写字符串 (Title Case)。我不擅长正则表达式,但通过我尝试使用的正则表达式找到了这个答案。

搜索表达式为:

"([A-Z])([A-Z]+)\b"
Run Code Online (Sandbox Code Playgroud)

模板表达式为:

"$1\L$2"
Run Code Online (Sandbox Code Playgroud)

为了快速使用它,我已经转义了反斜杠,如下所示:

var uppercase = "UPPER CASE STRING"
var titlecase = uppercase.stringByReplacingOccurrencesOfString("([A-Z])([A-Z]+)\\b", withString: "$1\\L$2", options: NSStringCompareOptions.RegularExpressionSearch, range: Range<String.Index>(start: uppercase.startIndex, end: uppercase.endIndex))
Run Code Online (Sandbox Code Playgroud)

上面的代码给出了以下结果:

"ULPPER CLASE SLTRING"
Run Code Online (Sandbox Code Playgroud)

从中您可以看到搜索表达式成功找到了 $1 和 $2 两部分,但看起来转义反斜杠会干扰替换。

我怎样才能得到预期的结果:

"Upper Case String"
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 5

NSStringSwift 提供了许多有用的现有方法。这包括capitalizedString,它可能完全符合您的要求,具体取决于您的要求。