如何在Swift 2.1中动态创建一个Character

时间:2016-01-30 17:29:42

标签: swift character-encoding

我有一个包含此字符串的文件:

N\u00e3o informado

比我读它并输入变量

let myString =  NSString(contentsOfFile: filename, encoding: NSUTF8StringEncoding)
print(mystring) // get "N\u00e3o informado"

然后我想将\u00e3转换为您的unicode值= ã。我在Swift Book中读到了这一行:

let text = "Voulez-vous un caf\u{65}\u{301}?"

我尝试动态创建相同的东西,但它没有用:

let substring = "00e3"
dinamic = "N\u{\(substring)}o informado"   //This produce the equivalent
print(dinamic)  // get "N\u{00e3}o informado" but I want "Não informado" 

以同样的方式,这不起作用

let code = "00e3"
let caracter = Character("\u{\(code)}")   //compile error
let caracter = Character("\\u{\(code)}")  //runtime error
let number = 00e3
let caracter = Character(number)    //compile error
let caracter = Character("\u{00e3}") //This work, but isn't dinamic

我该怎么做?

1 个答案:

答案 0 :(得分:1)

首先将您的String转换为Int告诉Int它位于16位,然后从UnicodeScalar创建Int,最后创建来自Character的{​​{1}}:

UnicodeScalar

如果您希望拥有let code = "00e3" let character = Character(UnicodeScalar(Int(code, radix: 16)!)) 而不是String,那么:

Character