我有以下字符串:“HelloMy名称是Bob”
我想改变它,以便任何小写后跟一个大写字母,在它前面有一段时间,如下所示:“你好。我的名字是Bob”。
目前,我有这个:
*
但是,我不知道在替换模式中应该放什么。谢谢你的帮助。
答案 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)
。