в Obj-C можно было перебирать по алфавиту с помощью:
for (char x='A'; x<='Z'; x++) {
В Swift это невозможно. Любая идея, как я могу это сделать?
в Obj-C можно было перебирать по алфавиту с помощью:
for (char x='A'; x<='Z'; x++) {
В Swift это невозможно. Любая идея, как я могу это сделать?
В 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)
}
}