Cập nhật cho Swift 3
Character
cú pháp Swift cho tạo thành một hệ thập lục phân code point là
\u{n}
trong đó n là số thập lục phân dài tối đa 8 chữ số. Phạm vi hợp lệ cho Unicode scalar là từ U + 0 đến U + D7FF và U + E000 đến U + 10FFFF. (U + D800 tới phạm vi U + DFFF là dành cho surrogate pairs, mà không vô hướng bản thân, nhưng được sử dụng trong UTF-16 để mã hóa các vô hướng giá trị cao hơn.)
Ví dụ:
// The following forms are equivalent. They all produce "C".
let char1: Character = "\u{43}"
let char2: Character = "\u{0043}"
let char3: Character = "\u{00000043}"
// Higher value Unicode scalars are done similarly
let char4: Character = "\u{203C}" // ‼ (DOUBLE EXCLAMATION MARK character)
let char5: Character = "\u{1F431}" // (cat emoji)
// Characters can be made up of multiple scalars
let char7: Character = "\u{65}\u{301}" // é = "e" + accent mark
let char8: Character = "\u{65}\u{301}\u{20DD}" // é⃝ = "e" + accent mark + circle
Ghi chú :
Chuỗi
Strings bao gồm các ký tự. Xem các ví dụ sau cho một số cách để tạo chúng bằng cách sử dụng các điểm mã thập lục phân.
Ví dụ:
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‼
Chuyển đổi giá trị Hex tại Runtime
Khi chạy bạn có thể chuyển đổi hệ thập lục phân hoặc Int
giá trị vào một Character
hoặc String
bằng cách đầu tiên chuyển đổi nó vào một UnicodeScalar
.
Ví dụ:
// hex values
let value0: UInt8 = 0x43 // 97
let value1: UInt16 = 0x203C // 22823
let value2: UInt32 = 0x1F431 // 127822
// convert hex to UnicodeScalar
let scalar0 = UnicodeScalar(value0)
// make sure that UInt16 and UInt32 form valid Unicode values
guard
let scalar1 = UnicodeScalar(value1),
let scalar2 = UnicodeScalar(value2) else {
return
}
// convert to Character
let character0 = Character(scalar0) // C
let character1 = Character(scalar1) // ‼
let character2 = Character(scalar2) //
// convert to String
let string0 = String(scalar0) // C
let string1 = String(scalar1) // ‼
let string2 = String(scalar2) //
// convert hex array to String
let myHexArray = [0x43, 0x61, 0x74, 0x203C, 0x1F431] // an Int array
var myString = ""
for hexValue in myHexArray {
if let scalar = UnicodeScalar(hexValue) {
myString.append(Character(scalar))
}
}
print(myString) // Cat‼
Đọc thêm
@Suragch Tôi có một ký tự unicode '\ u {0D85}'. Làm thế nào để tôi nhận được giá trị Int từ nó? – Isuru
@Isuru, tôi đã hỏi lại và trả lời câu hỏi của bạn ở đây: [Cách chuyển đổi Ký tự Unicode thành Int trong Swift] (http://stackoverflow.com/questions/38779114/how-to-convert-unicode-character-to -int-in-swift) – Suragch
@Suragch Cảm ơn rất nhiều vì câu trả lời chi tiết. Tôi thực sự tìm thấy cách để làm điều đó trong [câu trả lời] này (http://stackoverflow.com/a/24102584/1077789). Nhưng vẫn còn, tốt để có một lời giải thích kỹ lưỡng. – Isuru