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

标签 swift string parsing nstextview

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

如何将索引从 unicodeScalars 转换为字符?

最佳答案

不同的字符串 View 共享一个共同的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)) // 😀
}

关于swift - 将 unicodeScalars 索引转换为 swift 字符串中的字符索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55439912/

相关文章:

xcode - 尝试从终端运行 Swift 时出错

java - 关于字符串操作

java - 文字的字符串分配

java - Eclipse JDT Java Parser 中是否有任何类型的 "line visitor"?如果没有,有人知道一个好的解决方法吗?

swift - 让 View 始终填满 Swift Playground 时间线?

ios - 如何将文本分配给 tableView 中的单元格?

swift - UserNotifications 扩展服务 UNNotificationAction didReceive 操作委托(delegate)未被调用。

java - Java : Unexpected Type Error [duplicate]

parsing - Antlr4:如何在语法中隐藏和使用 token

c# - int.Parse(ToString) 不同于 (int)