我有一个 Unicode 字符
\u{0D85}
。如何从中获取Int
值?
我本来想将他们引用到另一个 Stack Overflow 的问答,但我找不到一个合适的。以下是转换方向的参考:
以下似乎是在询问如何将字符串形式的数字转换为实际的Int(例如将“1”转换为1)。 与其试图将我的答案放入评论中回答者,我将在下面提供一个答案。 \ u {0D85}的类型有些不清楚,但我将涵盖各种可能性。我有一个 Unicode 字符
\u{0D85}
。如何从中获取Int
值?
我本来想将他们引用到另一个 Stack Overflow 的问答,但我找不到一个合适的。以下是转换方向的参考:
以下似乎是在询问如何将字符串形式的数字转换为实际的Int(例如将“1”转换为1)。 与其试图将我的答案放入评论中回答者,我将在下面提供一个答案。 \ u {0D85}的类型有些不清楚,但我将涵盖各种可能性。十六进制转整数
如果你从 \u{0D85}
开始,并且知道 Unicode 字符的十六进制值,那么你可以直接以下面的格式写出它,因为它已经是一个 Int
了。
let myInt = 0x0D85 // Int: 3461
字符串转换为整数
我假设你有一个默认为String
类型的字符串"\u{0D85}"
(带引号)。由于它是一个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)更容易。 (有关更多详细信息,请参见 此答案。)
字符到整数的转换
Swift 的 Character
是一个扩展图形簇,它没有 utf16
或 unicodeScalars
属性,因此如果你从 Character
开始,则先将其转换为 String
,然后按照上面字符串到整数部分的说明进行转换。
let myChar: Character = "\u{0D85}"
let myString = String(myChar)
Unicode.Scalar
具有一个value
属性。 value
的声明如下:
Unicode标量的数字表示。
var value: UInt32 { get }
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
*/
Int
转换为Character
或String
,请参见此答案:https://dev59.com/LF0Z5IYBdhLWcg3wlRMV#31284539 - SuragchunicodeScalars
属性。请参考Imanou Petit的答案中的示例。 - Rob Napier