2016-08-04 26 views
6

A user asked câu hỏi sau đây để one of my answers.Cách chuyển đổi Ký tự Unicode thành Int trong Swift

Tôi có ký tự unicode \u{0D85}. Làm thế nào để nhận được giá trị Int từ nó?

Tôi sẽ giới thiệu cho họ một Ngăn xếp ngăn xếp khác Q & A nhưng tôi không thể tìm thấy. Những tham khảo chuyển đổi theo một hướng khác:

Và những dường như được hỏi làm thế nào để chuyển đổi một số ở dạng chuỗi đến một thực tế Int (như trong chuyển đổi "1"-1).

Thay vì cố gắng để phù hợp với câu trả lời của tôi trong một chú thích cho hỏi, tôi sẽ cung cấp một câu trả lời dưới đây. Loại \u{0D85} có phần không rõ ràng nhưng tôi sẽ đề cập đến các khả năng khác nhau.

Trả lời

6

Hex để int

Nếu bạn đang bắt đầu với \u{0D85} và bạn biết giá trị hex của ký tự Unicode, sau đó bạn cũng có thể ghi lại nó theo định dạng sau bởi vì nó là một Int rồi.

let myInt = 0x0D85       // Int: 3461 

String để int

tôi giả sử, tuy nhiên, bạn có "\u{0D85}" (trong dấu ngoặc kép), mà làm cho nó một String theo mặc định. Và vì nó là String, bạn không thể chắc chắn rằng bạn sẽ chỉ có một giá trị Int cho trường hợp chung.

let myString = "\u{0D85}" 

for element in myString.unicodeScalars { 
    let myInt = element.value    // UInt32: 3461 
} 

tôi có thể cũng đã sử dụng myString.utf16let myInt = Int(element), nhưng tôi tìm thấy nó dễ dàng hơn để đối phó với các giá trị vô hướng Unicode (UTF-32) khi có một khả năng của những thứ như biểu tượng cảm xúc. (Xem this answer để biết thêm chi tiết.)

Character để int

Swift Character, mà là một extended grapheme cluster, không có một utf16 hoặc unicodeScalars tài sản, vì vậy nếu bạn đang bắt đầu với Character sau đó chuyển nó sang một String trước và sau đó làm theo các hướng dẫn trong phần Chuỗi đến Int ở trên.

let myChar: Character = "\u{0D85}" 
let myString = String(myChar) 
+0

Đối với 'Int' to' Character' hoặc 'String' converstion, hãy xem câu trả lời này: http://stackoverflow.com/a/31284539 – Suragch

Các vấn đề liên quan