Swift 2

时间:2015-12-04 20:54:38

标签: swift

我正在进行字符串扩展以查找字符串中可能出现的多个位置。这是我的代码:

let letter: Character = "l"

extension String {
    func checkLetter(letter: Character) {
        if let index = self.rangeOfString(AString: String(letter), range: Range<Int>(start: 2, end: 5)  ) {
            print(index)
        }
    }
}

我完全迷失了如何填写范围部分。一直有错误。我想编写一个while循环来检查字符串中字符的索引。当发现它将更新我可以在范围内插入的变量,以便它在下一次在包含之前找到的字符位置的整个循环中跳过该部分。希望这有点清楚。这里有一些pseaduo代码:

extension func
    let range = 0
    while loop: checks if character is in string
        update range to index
        append index to NSarray list
return nsarray list and if none found return nil

2 个答案:

答案 0 :(得分:4)

这是您按照功能编程方法编写的扩展名。

extension String {
    func indexesOfChar(c: Character) -> [Int] {
        return characters
            .enumerate()
            .filter { $0.element == c }
            .map { $0.index }
    }
}

测试

"Luminetic Land".indexesOfChar("i") // [3, 7]

答案 1 :(得分:0)

仅供参考yourString.characters.indexOf("a")将为您提供"a"yourString首次出现的索引。您可以在while循环中使用它来查找前一个"a"索引加1的范围内的"a",然后将索引添加到数组,直到输出为负数。< / p>