【问题标题】:How to convert Unicode Character to Int in Swift如何在 Swift 中将 Unicode 字符转换为 Int
【发布时间】:2016-12-11 06:31:29
【问题描述】:

A user asked 将以下问题发送至one of my answers

我有一个 unicode 字符 \u{0D85}。如何从中获取Int 值?

我打算将他们推荐给另一个 Stack Overflow Q&A,但我找不到。这些是指转换另一个方向:

这些似乎是在询问如何将字符串形式的数字转换为实际的Int(如将"1" 转换为1)。

我将在下面提供一个答案,而不是试图将我的答案放在对提问者的评论中。 \u{0D85} 的类型有点不清楚,但我会介绍各种可能性。

【问题讨论】:

    标签: swift unicode integer


    【解决方案1】:

    十六进制转整数

    如果您以\u{0D85} 开头并且知道Unicode 字符的十六进制值,那么您不妨按照以下格式编写它,因为它已经是Int

    let myInt = 0x0D85                          // Int: 3461
    

    字符串到整数

    不过,我假设您有"\u{0D85}"(引号),默认情况下它是String。由于它是 String,因此您不能确定在一般情况下您只会有一个 Int 值。

    let myString = "\u{0D85}"
    
    for element in myString.unicodeScalars {
        let myInt = element.value               // UInt32: 3461
    }
    

    我也可以使用myString.utf16let myInt = Int(element),但我发现处理 Unicode 标量值 (UTF-32) 时更容易处理像表情符号之类的东西。 (详情请参阅this answer。)

    Int 的字符

    Swift Character,它是一个extended grapheme cluster,没有utf16unicodeScalars 属性,所以如果你以Character 开头,那么先将其转换为String,然后按照上面 String 到 Int 部分中的说明。

    let myChar: Character = "\u{0D85}"
    let myString = String(myChar)
    

    【讨论】:

    【解决方案2】:

    在 Swift 5 中,Unicode.Scalar 有一个 value 属性。 value 有以下声明:

    Unicode 标量的数字表示。

    var value: UInt32 { get }
    

    以下 Playground 示例代码展示了如何迭代 CharacterStringunicodeScalars 属性并打印每个 Unicode 标量的 Int32 值:

    let char: Character = "\u{0D85}"
    
    for scalar in char.unicodeScalars {
        print(scalar.value)
    }
    
    /*
     prints: 3461
     */
    
    let str: String = "\u{0D85}"
    
    for scalar in str.unicodeScalars {
        print(scalar.value)
    }
    
    /*
     prints: 3461
     */
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-19
      • 1970-01-01
      • 1970-01-01
      • 2015-08-26
      • 2016-09-02
      • 2018-05-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多