Изменить шрифт для всех букв AZ, AZ в тексте на нескольких языках Swift 4.2 - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть строка с несколькими языками, и я пытаюсь изменить шрифт для всех ". [^ 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 голосов
/ 06 февраля 2019
Классы

NSRange и NSRegularExpression предшествуют Swift и основаны на концепции NSString, согласно которой символ равен коду 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...