在Swift中通过字母表迭代

在Obj-C中,可以通过以下字母迭代字母:

for (char x='A'; x<='Z'; x++) { 

在Swift中,这是不可能的。 知道我怎么能这样做吗?

在Swift中,您可以在字符串上迭代字符,如下所示:

斯威夫特2

 for char in "abcdefghijklmnopqrstuvwxyz".characters { println(char) } 

Swift 1.2

 for char in "abcdefghijklmnopqrstuvwxyz" { println(char) } 

可能有更好的方法。

这有点麻烦,但以下工作:

  for val in UnicodeScalar("a").value...UnicodeScalar("z").value { let x = UnicodeScalar(val); println(x) } 

我怀疑这里的问题是“a”……“z”的含义对于不同的字符串编码可能有所不同。

也很麻烦,但没有额外的中间变量:

  for letter in map(UnicodeScalar("a").value...UnicodeScalar("z").value, {(val: UInt32) -> UnicodeScalar in return UnicodeScalar(val); }) { println(letter) } 
 for i in 97...122{println(UnicodeScalar(i))} 

此解决方案适用于Swift 3.0,并将打印出每个OP请求的值:

 "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters.flatMap { print($0) } 

或者为您提供一系列字母:

 let alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".characters.flatMap { $0.description } 

你试过这个吗?

 for var myChar:CChar = 65 ; myChar <= 90 ; ++myChar { let x:String = String(format: "%c", myChar) println(x) } 

如果您已经知道字符代码

更新了Swift 3.0及更高版本

 let startChar = Unicode.Scalar("A").value let endChar = Unicode.Scalar("Z").value for alphabet in startChar...endChar { if let char = Unicode.Scalar(alphabet) { print(char) } }