将 unicodeScalars 索引转换为 swift 字符串中的字符索引
convert unicodeScalars index to character index in a swift string
我有一个使用字符串的 unicodeScalars 视图计算索引的解析器。来自解析器的结果。
我有一个 NSTextView
,我想根据解析器的结果放置插入符号。不幸的是,NSTextView 的 selectedRange
需要字符索引而不是 unicodeScalar 索引。
如何将索引从 unicodeScalars 转换为字符?
不同的字符串视图共享一个公共 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)) //
}
我有一个使用字符串的 unicodeScalars 视图计算索引的解析器。来自解析器的结果。
我有一个 NSTextView
,我想根据解析器的结果放置插入符号。不幸的是,NSTextView 的 selectedRange
需要字符索引而不是 unicodeScalar 索引。
如何将索引从 unicodeScalars 转换为字符?
不同的字符串视图共享一个公共 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)) //
}