How to convert an Int to a Character in Swift

后端 未结 8 1904
萌比男神i
萌比男神i 2020-12-01 20:49

I\'ve struggled and failed for over ten minutes here and I give in. I need to convert an Int to a Character in Swift and cannot solve it.

Question<

相关标签:
8条回答
  • 2020-12-01 21:06

    For helpful context, taking vacawama's and Nate Cook's UnicodeScalar to use -

     let startingValue = Int(UnicodeScalar("A").value)
     for i in 0..<26 {
        let itemStr = String(UnicodeScalar(i + startingValue))
    
        items.append("Item " + itemStr)
    }
    
    0 讨论(0)
  • 2020-12-01 21:07

    How to convert an Int to a Character in Swift

    For the sake of future visitors, I am providing a basic answer to the question title rather than the details of the question itself.

    It is a two step process. Convert the Int to a UnicodeScalar and then convert the UnicodeScalar to a 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
    

    (source)

    Or alternatively...

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

    See also

    • How to express Strings in Swift using Unicode hexadecimal values (UTF-16)
    • Working with Unicode code points in Swift
    0 讨论(0)
  • 2020-12-01 21:09

    New and updated

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

    prints:

    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
    

    thx for the help from @vacawama, I like this version, for Swift(5) especially because of:

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

    prints:

    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
    

    and not having to look up, even tho we should know our unicode? haha etc...

    0 讨论(0)
  • 2020-12-01 21:13

    try this

    for i in 0...25
    {
        let string = String(format: "%c", i+65) as String
        NSLog("%@", string)
    }
    
    0 讨论(0)
  • 2020-12-01 21:14

    So far I've come up with this:

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

    If you're just trying to generate "A" to "Z", you can avoid the math and just do:

    for c in UnicodeScalar("A").value...UnicodeScalar("Z").value {
        print(String(UnicodeScalar(c)))
    }
    
    0 讨论(0)
  • 2020-12-01 21:18

    Simply convert the integer into String, then convert string into Character

    let number = 5
    let numChar = Character(String(number))
    
    0 讨论(0)
提交回复
热议问题