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