Convert Character to Integer in Swift

时间:2016-04-21 22:50:13

标签: swift

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.

3 个答案:

答案 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")
}