【问题标题】:How to convert an Int to a Character in Swift如何在 Swift 中将 Int 转换为字符
【发布时间】:2016-03-19 11:37:55
【问题描述】:

我在这里挣扎和失败了十多分钟,我屈服了。我需要在 Swift 中将 Int 转换为 Character,但无法解决。

问题

如何在 Swift 中将(castIntinteger)转换为Characterchar)?

说明性问题/任务挑战

生成一个 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! :)

【问题讨论】:

    标签: ios swift int character var


    【解决方案1】:

    您不能将整数直接转换为 Character 实例,但您可以从整数转换为 UnicodeScalar 再转换为 Character 并再次返回:

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

    【讨论】:

    • UnicodeScalar 初始化器是可选的,而 Character 初始化器没有可选的。你必须做一些更像Character(UnicodeScalar(i + startingValue)!)
    【解决方案2】:

    试试这个

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

    【讨论】:

      【解决方案3】:

      如何在 Swift 中将 Int 转换为字符

      为了以后的访问者,我提供的是问题标题的基本答案,而不是问题本身的细节。

      这是一个两步过程。将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
      

      (source)

      或者……

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

      另见

      【讨论】:

        【解决方案4】:

        到目前为止,我想出了这个:

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

        【讨论】:

          【解决方案5】:

          只需将整数转换为字符串,然后将字符串转换为字符

          let number = 5
          let numChar = Character(String(number))
          

          【讨论】:

            【解决方案6】:

            对于有用的上下文,使用 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)
            }
            

            【讨论】:

            • 好吧……你说得对,我讨厌这样。完毕!如果有人想要,这里是 C 风格 -
            • for(var i:Int=0; i
            • 好收获。我用您提出的“items.append("Item" + itemStr) 替换了原来的“items.append(String(format: "Item '%@'", itemStr))”
            【解决方案7】:

            这里是对 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,您将获得特殊字符。

            【讨论】:

              【解决方案8】:

              新的和更新的

              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
              

              而且不必查找,即使我们应该知道我们的 unicode?哈哈等等……

              【讨论】:

                猜你喜欢
                • 2016-12-11
                • 2015-08-26
                • 1970-01-01
                • 2021-10-24
                • 1970-01-01
                • 1970-01-01
                • 2014-08-05
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多