字符
用于形成十六进制代码点的Swift语法为
\u{n}
其中n为最多8位数字的十六进制数。Unicode标量的有效范围为U+0到U+D7FF和U+E000到U+10FFFF(包括边界)。(U+D800至U+DFFF范围是用于代理对,它们本身不是标量,但在UTF-16中用于编码更高值的标量)。
示例:
let char1: Character = "\u{43}"
let char2: Character = "\u{0043}"
let char3: Character = "\u{00000043}"
let char4: Character = "\u{203C}"
let char5: Character = "\u{1F431}"
let char7: Character = "\u{65}\u{301}"
let char8: Character = "\u{65}\u{301}\u{20DD}"
注:
字符串
字符串由字符组成。 以下示例展示了使用十六进制代码点来形成字符串的一些方法。
示例:
var string1 = "\u{0043}\u{0061}\u{0074}\u{203C}\u{1F431}" // Cat‼
// pass an array of characters to a String initializer
let catCharacters: [Character] = ["\u{0043}", "\u{0061}", "\u{0074}", "\u{203C}", "\u{1F431}"] // ["C", "a", "t", "‼", ""]
let string2 = String(catCharacters) // Cat‼
在运行时转换十六进制值
在运行时,您可以将十六进制或 Int
值转换为 Character
或 String
,方法是先将其转换为 UnicodeScalar
。
示例:
let value0: UInt8 = 0x43
let value1: UInt16 = 0x203C
let value2: UInt32 = 0x1F431
let scalar0 = UnicodeScalar(value0)
guard
let scalar1 = UnicodeScalar(value1),
let scalar2 = UnicodeScalar(value2) else {
return
}
let character0 = Character(scalar0)
let character1 = Character(scalar1)
let character2 = Character(scalar2)
let string0 = String(scalar0)
let string1 = String(scalar1)
let string2 = String(scalar2)
let myHexArray = [0x43, 0x61, 0x74, 0x203C, 0x1F431]
var myString = ""
for hexValue in myHexArray {
if let scalar = UnicodeScalar(hexValue) {
myString.append(Character(scalar))
}
}
print(myString)
进一步阅读
\u{0D85}
。我该如何获取它的Int值? - IsuruCharacter
由多个标量组成,则只返回第一个标量值。其他标量将被忽略。(例如:let myChar: Character = "\u{65}\u{301}" // é
) - Suragch