我有多种语言的字符串,我想做的是更改字符串中所有“。 [^ A-Za-z]。”的字体。
我尝试使用regex.matches来获取所有匹配范围,但是我收到的范围是错误的。
let regex = try! NSRegularExpression(pattern: ".*[^A-Za-z].*", options: NSRegularExpression.Options())
let value = regex.matches(in: self.titleLabel.text!, options: NSRegularExpression.MatchingOptions(), range:NSMakeRange(0, self.titleLabel.text!.count))
答案 0 :(得分:0)
NSRange
和NSRegularExpression
类早于Swift,它们基于NSString
概念,即 character 等于UTF-16代码。另一方面,Swift的String
类的概念是,字符是Unicode扩展的图形簇,即可以在文本编辑器中选择的最小单位。结果,当您指定位置或长度时,NSRange
/ NSString
和String
不同。
通常的棘手问题是使用NSString
实例(而不是String
实例)进行正则表达式处理:
let regex = try! NSRegularExpression(pattern: ".*[^A-Za-z].*", options: NSRegularExpression.Options())
let text = self.titleLabel.text! as NSString
let value = regex.matches(in: text, options: NSRegularExpression.MatchingOptions(), range:NSMakeRange(0, text.length))