[英]How to convert Unicode Character to Int in Swift
我有一个unicode字符
\\u{0D85}
。 如何从中获取Int
值?
我打算将它们引用到另一个Stack Overflow Q&A,但我找不到一个。 这些是指转换另一个方向:
这些似乎是在询问如何将字符串形式的数字转换为实际的Int
(如将"1"
转换为1
)。
我将在下面提供一个答案,而不是试图将我的答案放在对提问者的评论中。 \\u{0D85}
的类型有点不清楚,但我会介绍各种可能性。
Hex到Int
如果您从\\u{0D85}
并且您知道Unicode字符的十六进制值,那么您也可以使用以下格式编写它,因为它已经是Int
。
let myInt = 0x0D85 // Int: 3461
字符串到Int
不过,我假设您有"\\u{0D85}"
(引号),默认情况下它是一个String
。 由于它是一个String
,因此您无法确定一般情况下只有一个Int
值。
let myString = "\u{0D85}"
for element in myString.unicodeScalars {
let myInt = element.value // UInt32: 3461
}
我也可以使用myString.utf16
并let myInt = Int(element)
,但是当有可能出现像表情符号这样的东西时,我发现更容易处理Unicode标量值(UTF-32)。 (有关详细信息,请参阅此答案 。)
Int的字符
Swift Character
是一个扩展的字形集群 ,没有utf16
或unicodeScalars
属性,因此如果您从Character
开始,则首先将其转换为String
,然后按照上面String to Int部分中的说明进行操作。
let myChar: Character = "\u{0D85}"
let myString = String(myChar)
使用Swift 5, Unicode.Scalar
具有value
属性。 value
具有以下声明:
Unicode标量的数字表示。
var value: UInt32 { get }
以下Playground示例代码显示如何迭代Character
或String
的unicodeScalars
属性并打印每个Unicode标量的Int32
值:
let char: Character = "\u{0D85}"
for scalar in char.unicodeScalars {
print(scalar.value)
}
/*
prints: 3461
*/
let str: String = "\u{0D85}"
for scalar in str.unicodeScalars {
print(scalar.value)
}
/*
prints: 3461
*/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.