首页 > 解决方案 > 返回字符串中变量的“位置”

问题描述

这是一个奇怪的问题,但我不确定是否可以这样做。

我正在尝试识别字符串中某个项目的“计数”位置。

例如,如果我有一个字符串:“你好多么美好的一天”(23 个字符),我想知道空格在哪里。在这种情况下,字符串将在第 6、11、13 和 20 个字符处有一个空格。是否有可以提供此反馈的功能?

任何见解将不胜感激。

提前感谢您宝贵的时间和洞察力。

标签: swiftstringxcode

解决方案


试试这个扩展:

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
    }
}

用法(请注意,在 Swift 中,第 n 个字符开始于0而不是1):

let string = "hello what a lovely day"
let indices = string.indicesOf(string: " ")
print("Indices are \(indices)")

索引为 [5, 10, 12, 19]


推荐阅读