将unicodeScalars索引转换为swift字符串中的字符索引

问题描述 投票:0回答:1

我有一个解析器,它使用字符串的unicodeScalars视图来计算索引。从解析器的结果。我有一个NSTextView,我想根据解析器的结果放置插入符号。不幸的是,NSTextView的selectedRange期待一个字符索引,而不是unicodeScalar索引。

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

swift string parsing nstextview
1个回答
1
投票

不同的字符串视图共享一个共同的String.IndexNSRange(_: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)) // 😀
}
© www.soinside.com 2019 - 2024. All rights reserved.