ios - 在 Swift 中查找字符串中第 N 个子字符串实例的索引

标签 ios swift string swift2

我的 Swift 应用涉及在 UITextView 中搜索文本。用户可以在该 TextView 中搜索某个子字符串,然后跳转到 TextView 中该字符串的任何实例(例如,第三个实例)。我需要找出它们所在字符的整数值。

例如:

示例 1: 用户搜索“hello”, TextView 显示为“hey hi hello,hey hi hello”,然后用户按下向下箭头以查看第二个实例。我需要知道第二个 hello 中第一个 h 的整数值(即 hello 中的 h 在 TextView 中的哪个 # 字符)。整数值应为 22

示例 2: 用户搜索“abc”,而 TextView 读取“abcd”,他们正在寻找 abc 的第一个实例,因此整数值应该是 1(这是 a 的整数值,因为它是他们正在搜索的实例的第一个字符)。

如何获取用户搜索的字符的索引?

最佳答案

Xcode 11 • Swift 5 或更高版本

let sentence = "hey hi hello, hey hi hello"
let query = "hello"
var searchRange = sentence.startIndex..<sentence.endIndex
var indices: [String.Index] = []

while let range = sentence.range(of: query, options: .caseInsensitive, range: searchRange) {
    searchRange = range.upperBound..<searchRange.upperBound
    indices.append(range.lowerBound)
}

print(indices)   // "[7, 21]\n"

关于ios - 在 Swift 中查找字符串中第 N 个子字符串实例的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39358798/

相关文章:

swift - 使用 Realm,如何将查询的结果存储在全局属性中并访问它?

python - 拆分一个不带空格的十进制值字符串 - Python

java - 在 Android、Eclipse 中打印字符串数组

ios - - 使用 `$(inherited)` 标志,或 - 从目标中删除build设置。 CocoaPod Swift3 pod更新报错

android - OneSignal 发送给目标用户

ios - 如何在 Swift 中使用 Firebase 处理离线注销?

ios - NSSortDescriptor NSDate 升序。如何对具有相同日期的对象进行排序?

ios - 同一部分内单元格之间的可变空间

ios - 在 iOS 中创建具有不同可触摸区域的圆圈

python - list += str 和 list += str 有什么区别,