在Swift中将字符转换为整数

Nic*_*ris 14 swift

我正在创建一个iPhone应用程序,我需要将单个数字转换为整数.

我的代码有一个名为char的变量,它有一个Character类型,但我需要能够用它做数学,因此我认为我需要将它转换为字符串,但是我找不到办法做到这一点.

小智 36

在最新的 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")
}
Run Code Online (Sandbox Code Playgroud)


Luc*_*tti 19

用Character你可以创建一个String.并且String你可以创建一个Int.

let char: Character = "1"
if let number = Int(String(char)) {
    // use number    
}
Run Code Online (Sandbox Code Playgroud)


nte*_*iss 7

该String如果使用中间人类型的转换是没有必要的unicodeScalars雨燕4.0的物业Character类型。

let myChar: Character = "3"
myChar.unicodeScalars.first!.value - Unicode.Scalar("0")!.value // 3: UInt32
Run Code Online (Sandbox Code Playgroud)

这使用了 C 代码中常见的一种技巧,即减去char ’0’文字的值以将 ascii 值转换为十进制值。有关转换,请参阅此站点:https : //www.asciitable.com

我的答案中也有一些隐含的展开。为了避免这些,您可以验证您是否有十进制数字CharacterSet.decimalDigits,和/或guard let在first属性周围使用s 。您也可以直接减去 48 而不是”0”通过Unicode.Scalar.