我开始在Swift游乐场进行实验,以熟悉这门语言。重复我的问题:在Swift 5中,如何以可读的方式(使用In )显示从range.UpperBound或range.LowerBound返回的原始位?
举个例子,假设我有一个字符串var myStr = "Hello World!",我想看看在myStr中是否按顺序存在'substring‘。如果是这样,那么我想打印找到的范围的索引:
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)
}我不想打印原始位,而是打印可读索引..."from 1 to 4“我不想在另一个范围内使用这些数字,只想打印可读索引。谢谢
发布于 2020-04-03 01:43:23
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)")
}https://stackoverflow.com/questions/60996939
复制相似问题