我可以直接在Swift Character和它的Unicode數值之間轉換嗎?那就是:在Swift中轉換字符和CodePoint
var i:Int = ... // A plain integer index.
var myCodeUnit:UInt16 = myString.utf16[i]
// Would like to say myChar = myCodeUnit as Character, or equivalent.
或...
var j:String.Index = ... // NOT an integer!
var myChar:Character = myString[j]
// Would like to say myCodeUnit = myChar as UInt16
我可以說:
myCodeUnit = String(myChar).utf16[0]
,但是這意味着創建的每個字符的新字符串。而且我正在做這個數千次(解析文本),所以這是一個新的字符串的lot立即被丟棄。
請注意,unicode不是16位字符集,而是21位字符集。 – Deduplicator
你可以批量做這個操作嗎?說讀一個1024個字符的「字符串」,然後在每個字符的循環中,而不是爲每個字符分配一個字符串? – Erik
是的,我知道21位問題。它比這更復雜,唉。謝謝SiLo,那正是我正在做的。實際上,我保持一個整數索引和一個String.Index並行。但它似乎有點迂迴。 –