更改多语言文本中所有a-z,A-Z字母的字体Swift 4.2

时间:2019-02-06 13:12:59

标签: swift

我有多种语言的字符串,我想做的是更改字符串中所有“。 [^ 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))

1 个答案:

答案 0 :(得分:0)

NSRangeNSRegularExpression类早于Swift,它们基于NSString概念,即 character 等于UTF-16代码。另一方面,Swift的String类的概念是,字符是Unicode扩展的图形簇,即可以在文本编辑器中选择的最小单位。结果,当您指定位置或长度时,NSRange / NSStringString不同。

通常的棘手问题是使用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))