加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift查找所有出现的子字符串

发布时间:2020-12-14 05:47:37 所属栏目:百科 来源:网络整理
导读:我在Swift中有一个String类的扩展,它返回给定子字符串的第一个字母的索引. 任何人都可以帮助我做到这一点,它将返回所有出现的数组,而不仅仅是第一个? 谢谢. extension String { func indexOf(string : String) - Int { var index = -1 if let range = self.
我在Swift中有一个String类的扩展,它返回给定子字符串的第一个字母的索引.

任何人都可以帮助我做到这一点,它将返回所有出现的数组,而不仅仅是第一个?

谢谢.

extension String {
    func indexOf(string : String) -> Int {
        var index = -1
        if let range = self.range(of : string) {
            if !range.isEmpty {
                index = distance(from : self.startIndex,to : range.lowerBound)
            }
        }
        return index
    }
}

例如,而不是返回值50我想像[50,74,91,103]

您只是继续推进搜索范围,直到找不到子字符串的更多实例:
extension String {
    func indicesOf(string: String) -> [Int] {
        var indices = [Int]()
        var searchStartIndex = self.startIndex

        while searchStartIndex < self.endIndex,let range = self.range(of: string,range: searchStartIndex..<self.endIndex),!range.isEmpty
        {
            let index = distance(from: self.startIndex,to: range.lowerBound)
            indices.append(index)
            searchStartIndex = range.upperBound
        }

        return indices
    }
}

let keyword = "a"
let html = "aaaa"
let indicies = html.indicesOf(string: keyword)
print(indicies) // [0,1,2,3]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读