I am creating an iPhone app and I need to convert a single digit number into an integer.
My code has a variable called char that has a type Character, but I need to be able to do math with it, therefore I think I need to convert it to a string, however I cannot find a way to do that.
答案 0 :(得分:12)
使用Character
,您可以创建String
。使用String
,您可以创建Int
。
let char: Character = "1"
if let number = Int(String(char)) {
// use number
}
答案 1 :(得分:4)
如果您使用Swift 4.0的String
类型的unicodeScalars
属性,则无需Character
中间人类型转换。
let myChar: Character = "3"
myChar.unicodeScalars.first!.value - Unicode.Scalar("0")!.value // 3: UInt32
这使用C代码中常见的一种技巧,即减去char
’0’
文字的值,将ascii值转换为十进制值。有关转化,请参阅此网站:https://www.asciitable.com
在我的回答中也有一些隐含的解开。为了避免这种情况,您可以使用CharacterSet.decimalDigits
验证您的小数位数,和/或在guard let
属性周围使用first
s。您也可以直接减去48而不是将”0”
转换为Unicode.Scalar
。
答案 2 :(得分:0)
在最新的Swift版本中(至少在Swift 5中),有一种更直观的方法来转换Character
实例。 Character
具有属性wholeNumberValue
,该属性尝试将字符转换为Int
,如果字符不代表整数,则返回nil
。
let char: Character = "5"
if let intValue = char.wholeNumberValue {
print("Value is \(intValue)")
} else {
print("Not an integer")
}