конвертировать индекс unicodeScalars в индекс символа в быстрой строке - PullRequest
0 голосов
/ 31 марта 2019

У меня есть анализатор, который использует представление unicodeScalars строки для вычисления индексов.Из результата парсера.У меня есть NSTextView, где я хотел бы разместить каретку в зависимости от результата парсера.К сожалению, selectedRange NSTextView ожидает индекс символа, а не индекс unicodeScalar.

Как преобразовать индекс из unicodeScalars в символы?

1 Ответ

1 голос
/ 31 марта 2019

Различные строковые представления имеют общий String.Index, и NSRange(_:in:) может использоваться для преобразования диапазона String в NSRange (что и нужно selectedRange).Пример:

let str = "??ab?cde"
if let idx = str.unicodeScalars.firstIndex(of: "?") {
    let nsRange = NSRange(idx...idx, in: str)

    print(nsRange) // {6, 2}
    print((str as NSString).substring(with: nsRange)) // ?
}
...