首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Swift 5中,如何以可读的方式显示从range.UpperBound或range.LowerBound返回的原始位(使用In )?

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

Stack Overflow用户
提问于 2020-04-03 00:56:33
回答 1查看 169关注 0票数 1

我开始在Swift游乐场进行实验,以熟悉这门语言。重复我的问题:在Swift 5中,如何以可读的方式(使用In )显示从range.UpperBound或range.LowerBound返回的原始位?

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

代码语言:javascript
复制
    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“我不想在另一个范围内使用这些数字,只想打印可读索引。谢谢

EN

回答 1

Stack Overflow用户

发布于 2020-04-03 01:43:23

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

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

代码语言:javascript
复制
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)")
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60996939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档