在 Swift 5 中,如何以可读的方式(使用整数)显示从 range.UpperBound 或 range.LowerBound 返回的原始位?

Posted

技术标签:

【中文标题】在 Swift 5 中,如何以可读的方式(使用整数)显示从 range.UpperBound 或 range.LowerBound 返回的原始位?【英文标题】:In Swift 5, how do I display the raw bits returned from range.UpperBound or range.LowerBound in a readable way (with ints)? 【发布时间】:2020-04-02 16:56:32 【问题描述】:

我开始在 Swift Playgrounds 中进行实验以熟悉该语言。重复我的问题:

例如,假设我有一个字符串 var myStr = "Hello World!",我想查看 myStr 中是否按顺序存在“子字符串”。如果是这样,那么我想打印找到的范围的索引:

    var myStr = "Hello World!"
    if let rangeFound = myStr.range(of: "ello")
        print(rangeFound) //Im getting: Index(_rawBits: 65536)..<Index(_rawBits: 327680)
        print("Found ello from \(rangeFound.lowerBound) to \(rangeFound.upperBound)")
        //prints: Found ello from Index(_rawBits: 65536) to Index(_rawBits: 327680)
    

我不想打印原始位,而是打印可读索引...“从 1 到 4” 我不想在另一个范围内使用这些数字,只是想打印可读的索引。谢谢

【问题讨论】:

【参考方案1】:

Unicode 字符可以包含多个字节,因此索引不能简单地为Int

获取整数索引的解决方法是转换为NSRange

let myStr = "Hello World!"
if let rangeFound = myStr.range(of: "ello")
    let nsRange = NSRange(rangeFound, in: myStr)
    print("Found ello from \(nsRange.location) to \(nsRange.location + nsRange.length - 1)")

【讨论】:

以上是关于在 Swift 5 中,如何以可读的方式(使用整数)显示从 range.UpperBound 或 range.LowerBound 返回的原始位?的主要内容,如果未能解决你的问题,请参考以下文章

使用脚本以可读的 JSON 格式显示 curl 命令输出

使用脚本以可读的 JSON 格式显示 curl 命令输出

PHP 以可读的html格式打印数组

有没有办法以可读的形式从 .NET 程序集中检索编译器生成的代码?

如何在 Swift 中将多字符数字格式转换为可读的字符串?

如何在 Swift 中的 NSJSONSerialization.dataWithJSONObject 之后获取可读的 JSON