【问题标题】:How can I get the Unicode codepoint represented by an integer in Swift?如何在 Swift 中获取由整数表示的 Unicode 代码点?
【发布时间】:2014-06-08 15:46:19
【问题描述】:

所以我知道如何像这样将String转换为utf8格式

for character in strings.utf8 {
     // for example A will converted to 65
     var utf8Value = character
}

我已经阅读了该指南,但找不到如何将整数表示的 Unicode 代码点转换为字符串。例如:将 65 转换为 A。我已经尝试使用 "\u"+utf8Value 但仍然失败。

有什么办法吗?

【问题讨论】:

  • 你知道,单个 UTF8 字节并不总是一个字符。在'A'的情况下是,在'ñ'或'ö'的情况下不是......问题应该是如何将表示为整数的unicode代码点转换为Character.. .
  • 感谢迈克尔指出,我已经编辑了我的问题

标签: swift utf-8 utf8-decode


【解决方案1】:

如果您查看Character 的枚举定义,您会看到以下初始化程序:

init(_ scalar: UnicodeScalar)

如果我们再看一下 struct UnicodeScalar,我们会看到这个初始化器:

init(_ v: UInt32)

我们可以把它们放在一起,我们得到一个完整的角色

Character(UnicodeScalar(65))

如果我们想要它在一个字符串中,它只是另一个初始化器......

  1> String(Character(UnicodeScalar(65)))
$R1: String = "A"

或者(虽然我不知道为什么这个有效)你可以这样做

String(UnicodeScalar(65))

【讨论】:

  • 至于最后一种情况:String(UnicodeScalar(65)) 以前可以工作,但现在是String(describing: UnicodeScalar(65))。这表明这个特定的初始化程序将UnicodeScalar 视为CustomStringConvertible,最后要求它的自我description
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
相关资源
最近更新 更多