gpt4 book ai didi

ios - 快速获取字符串中子字符串的所有范围

转载 作者:可可西里 更新时间:2023-10-31 23:54:47 24 4
gpt4 key购买 nike

我有一个字符串,例如“ab ad adk fda kla kad ab ab kd”。我想获得 ab 的所有范围。(这里 ab 出现在 3 个位置,所以我应该得到 3 个范围)。在正常情况下,我的代码工作正常,但如果搜索文本是“。”,那么我得到错误的结果

do {
let regEx = try NSRegularExpression(pattern: searchText, options: NSRegularExpressionOptions.CaseInsensitive)

let matchesRanges = regEx.matchesInString(attributedText.string, options:[], range: NSMakeRange(0, attributedText.string.length))

for rng in matchesRanges {
let wordRange = rng.rangeAtIndex(0)
}
} catch {
...
}

最佳答案

以下解决方案使用 native Swift 4 函数 range(of:, options:, range:, locale:) ):

extension String {
func ranges(of substring: String, options: CompareOptions = [], locale: Locale? = nil) -> [Range<Index>] {
var ranges: [Range<Index>] = []
while ranges.last.map({ $0.upperBound < self.endIndex }) ?? true,
let range = self.range(of: substring, options: options, range: (ranges.last?.upperBound ?? self.startIndex)..<self.endIndex, locale: locale)
{
ranges.append(range)
}
return ranges
}
}

(Swift 4 然后提供原生 API 将 Range<Index> 转换为 NSRange )

关于ios - 快速获取字符串中子字符串的所有范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36865443/

24 4 0
文章推荐: 找不到 javascript 实例方法 : Object # has no method 'handleRequest'