Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Swift 2的字符串中字符的位置_Swift - Fatal编程技术网

使用Swift 2的字符串中字符的位置

使用Swift 2的字符串中字符的位置,swift,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) ) {

我正在做一个字符串扩展,用于查找一个字符在字符串中可能出现的多个位置。这是我的代码:

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

这是按照函数式编程方法编写的扩展

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


这是按照函数式编程方法编写的扩展

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


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

仅供参考
您的string.characters。indexOf(“a”)
将为您提供
“a”第一次出现的索引
您的字符串中
。你可以在
while
循环中使用它来查找
“a”
,从前面的
“a”
加上1的索引范围内,然后将索引添加到数组中,直到输出为负1。

为什么是扩展,一定有很好的理由?只是为了让我的代码看起来更干净,更容易理解。以下是线程:。这可能有助于作为起点:。下一个开发人员是否会想知道什么是
checkLetter
,并且知道它是一个扩展?名称
checkLetter
是否指示方法的作用,检查什么?至少给它一个描述性的名字,否则下一个开发者(可能是明年的你)将不得不找到、阅读并弄清楚它的功能。不,但是谢谢你的反馈。我会称之为:findindexesofchar为什么是一个扩展,一定有一个很好的理由?只是为了让我的代码看起来更干净,更容易理解。以下是线程:。这可能有助于作为起点:。下一个开发人员是否会想知道什么是
checkLetter
,并且知道它是一个扩展?名称
checkLetter
是否指示方法的作用,检查什么?至少给它一个描述性的名字,否则下一个开发者(可能是明年的你)将不得不找到、阅读并弄清楚它的功能。不,但是谢谢你的反馈。我称之为:findindexesofchart这是一段非常好的代码。谢谢你回答我的问题!这是一段非常好的代码。谢谢你回答我的问题!
"Luminetic Land".indexesOfChar("i") // [3, 7]