如何从unichar转换为字符

Mao*_*aor 2 char ios swift swift3

有更好的方法将 unichar 转换为 Character 吗?试过:

var unichar = ...
let str = NSString(characters: &unichar, length: 1) as String
let character = Array(str.characters)[0])
Run Code Online (Sandbox Code Playgroud)

Mar*_*n R 6

您可以转换unichar-> UnicodeScalar-> Character

let c = unichar(8364)
if let uc = UnicodeScalar(c) {
    let char = Character(uc)
    print(char) // €
} else {
    print("illegal input")
}
Run Code Online (Sandbox Code Playgroud)

范围内的输入值0xD800...0xDFFF (高代理和低代理)是不允许的,因为它们与有效的 Unicode 标量值不对应。

如果保证不会出现这些输入值,那么您可以将转换简化为

let char = Character(UnicodeScalar(c)!)
Run Code Online (Sandbox Code Playgroud)

要用默认字符(例如问号)替换可能无效的输入值,请使用

let char = Character(UnicodeScalar(c) ?? "?")
Run Code Online (Sandbox Code Playgroud)