Swift Regex:替换小写后跟大写

时间:2017-08-07 03:00:42

标签: ios regex swift

我有以下字符串:“HelloMy名称是Bob”

我想改变它,以便任何小写后跟一个大写字母,在它前面有一段时间,如下所示:“你好。我的名字是Bob”。

目前,我有这个:

*

但是,我不知道在替换模式中应该放什么。谢谢你的帮助。

1 个答案:

答案 0 :(得分:4)

似乎是一个使用捕获的简单示例,您可能会找到许多关于它的文章:

var text = "HelloMy name is Bob"
let regex = try! NSRegularExpression(pattern: "([a-z])([A-Z])") //<-Use capturing, `([a-z])`->$1, `([A-Z])`->$2
text = regex.stringByReplacingMatches(in: text, range: NSRange(0..<text.utf16.count),
    withTemplate: "$1. $2") //<- Use `$1`, `$2`... as reference to capture groups
print(text) //->Hello. My name is Bob

顺便说一下,NSMakeRange(0, text.characters.count-1)不是与NSRegularExpression一起使用的有效范围。 NSRegularExpression使用基于UTF-16的位置和偏移量。并且为了表示整个范围,不需要-1。如上所述使用NSMakeRange(0, text.utf16.count)NSRange(0..<text.utf16.count)