在 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 返回的原始位?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法以可读的形式从 .NET 程序集中检索编译器生成的代码?
如何在 Swift 中的 NSJSONSerialization.dataWithJSONObject 之后获取可读的 JSON