在Swift中,我该如何获取由整数表示的Unicode代码点?

8
所以我知道如何将字符串转换为UTF-8格式,就像这样
for character in strings.utf8 {
     // for example A will converted to 65
     var utf8Value = character
}

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

是否有任何方法可以实现这一点?


你知道,一个UTF8字节并不总是一个字符。对于'A'来说,它是一个字符,但对于'ñ'或'ö'来说就不是...问题应该是如何将表示为整数的Unicode代码点转换为字符... - Michael
感谢迈克尔指出,我已经编辑了我的问题。 - Niko Adrianus Yuwono
1个回答

11

如果你查看Character的枚举定义,你会看到以下的初始化器:

init(_ scalar: UnicodeScalar)

如果我们看一下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,最终要求其自我“描述”。 - ctietze

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接