遍历字符串 Swift 2.0

Iterate through a String Swift 2.0

我正在尝试在 Swift 游乐场中编写一段非常简单的代码。

var word = "Zebra"

for i in word {
  print(i)
}

但是,我总是在第 3 行出错。

'String' does not have a member named 'Generator'

关于为什么这不起作用的任何想法?注意:我在 Xcode 7 工作,使用 Swift 2.0 (Strings and Characters).

从 Swift 2 开始,String 不符合 SequenceType。但是,您可以在 String 上使用 characters 属性。 characters returns 符合 SequenceTypeString.CharacterView,因此可以使用 for 循环进行迭代:

let word = "Zebra"

for i in word.characters {
    print(i)
}

或者,您可以向 String 添加扩展名以使其符合 SequenceType:

extension String: SequenceType {}

// Now you can use String in for loop again.
for i in "Zebra" {
    print(i)
}

尽管如此,我确信 Apple 有理由删除 StringSequenceType 的一致性,因此第一个选项似乎是更好的选择。探索可能的事情很有趣。

String 不再符合 SequenceType。但是,您可以通过以下方式访问它的 characters 属性:

var word = "Zebra"

for i in word.characters {
    print(i)
}

请注意,文档尚未更新。

Swift 3.0.1

使用 characters 属性 的 indices 属性 访问字符串中单个字符的所有 indices

let greeting = "Guten Tag!"
for index in greeting.characters.indices {
print("\(greeting[index]) ", terminator: "")
}
// Prints "G u t e n   T a g ! "

访问https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/StringsAndCharacters.html

Swift 4

Forin循环:

let word = "Swift 4"
for i in word {
    print(i)
}

地图 例子:

let word = "Swift 4"
_ = word.map({ print([=11=]) })

forEach 示例:

let word = "Swift 4"
word.forEach({ print([=12=]) })