快速字符串将unicodeScalars索引转换为字符索引

时间:2019-03-31 10:19:12

标签: swift string parsing nstextview

我有一个解析器,该解析器使用字符串的unicodeScalars视图来计算索引。根据解析器的结果。 我有一个NSTextView,我想根据分析器的结果将插入符号放在其中。不幸的是,NSTextView的selectedRange期望使用字符索引而不是unicodeScalar索引。

如何将索引从unicodeScalars转换为Characters?

1 个答案:

答案 0 :(得分:1)

不同的字符串视图共享一个公用的String.Index,并且NSRange(_:in:)可用于将String范围转换为NSRange(这是selectedRange所需要的)。示例:

let str = "abcde"
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)) // 
}