Как преобразовать Int в символ в Swift - программирование

Как преобразовать Int в символ в Swift

Я боролся и провалился более десяти минут здесь, и я сдаюсь. Мне нужно преобразовать Int в персонажа в Swift и не может его решить.

Вопрос

Как вы преобразовываете a Int (integer) в Character (char) в Swift?

Иллюстративная задача/задача задачи

Создайте цикл for, который печатает буквы "A" и "Z", например. что-то вроде этого:

    for(var i:Int=0;i<26;i++) {      //Important to note - I know 
        print(Character('A' + i));   //this is horrendous syntax...
    }                                //just trying to illustrate! :)
4b9b3361

Ответ 1

Вы не можете преобразовать целое число непосредственно в экземпляр Character, но вы можете перейти от целого к UnicodeScalar в Character и обратно:

let startingValue = Int(("A" as UnicodeScalar).value) // 65
for i in 0 ..< 26 {
    print(Character(UnicodeScalar(i + startingValue)))
}

Ответ 2

До сих пор я придумал следующее:

for i in 0 ..< 26 {
    print(Character(UnicodeScalar(Int(UnicodeScalar("A").value) + i)))
}

Если вы просто пытаетесь сгенерировать "A" на "Z", вы можете избежать математики и просто выполните:

for c in UnicodeScalar("A").value...UnicodeScalar("Z").value {
    print(String(UnicodeScalar(c)))
}

Ответ 3

попробуйте это

for i in 0...25
{
    let string = String(format: "%c", i+65) as String
    NSLog("%@", string)
}

Ответ 4

Как преобразовать Int в символ в Swift

Для будущих посетителей я предоставляю основной ответ на вопрос, а не детали самого вопроса.

Это двухэтапный процесс. Преобразуйте Int в UnicodeScalar, а затем преобразуйте UnicodeScalar в Character.

let myInteger: Int = 97

// convert Int to a valid UnicodeScalar
guard let myUnicodeScalar = UnicodeScalar(myInteger) else {
    return
}

// convert UnicodeScalar to Character
let myCharacter = Character(myUnicodeScalar)

// results
print(myCharacter) // a

(источник)

Или альтернативно...

if let myUnicodeScalar = UnicodeScalar(97) 
    let myCharacter = Character(myUnicodeScalar)
}

См. также

Ответ 5

Для полезного контекста, принимая vacawama и Nate Cook UnicodeScalar для использования -

 let startingValue = Int(UnicodeScalar("A").value)
 for i in 0..<26 {
    let itemStr = String(UnicodeScalar(i + startingValue))

    items.append("Item " + itemStr)
}

Ответ 6

Вот расширение для Int, чтобы обеспечить соответствующую функциюLetter:

extension Int {
    func correspondingLetter(inUppercase uppercase: Bool = false) -> String? {
        let firstLetter = uppercase ? "A" : "a"
        let startingValue = Int(UnicodeScalar(firstLetter)!.value)
        if let scalar = UnicodeScalar(self + startingValue) {
            return String(scalar)
        }
        return nil
    }
}

Обратите внимание, что если int больше 26, вы получите специальные символы.

Ответ 7

Новое и обновленное

for charac in Unicode.Scalar("A").value...Unicode.Scalar("Z").value {
    print(Unicode.Scalar(charac)!, terminator:" ")}

печатает:

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

спасибо за помощь от @vacawama, мне нравится эта версия, для Swift (5), особенно из-за:

for charac in Unicode.Scalar("a").value...Unicode.Scalar("z").value {
    print(Unicode.Scalar(charac)!, terminator:" ")}

печатает:

a b c d e f g h i j k l m n o p q r s t u v w x y z

и не нужно искать, даже если мы должны знать наш юникод? хаха и тд...