我试图弄清楚如何获取 String 对象中包含的字符的数值。
例如
let checkString = "ball"
for i in checkString.characters {
var val = Int(String(i))!
print(val)
}
我希望我的输出是:
ASCII value of 'b'
ASCII value of 'a'
ASCII value of 'l'
ASCII value of 'l'
但是,我得到了错误:
fatal error: unexpectedly found nil while unwrapping an Optional value
在Java中,等效的代码是:
int val = str.charAt(i)
谁能看出我哪里出错了?
最佳答案
基于这篇文章What's the simplest way to convert from a single character String to an ASCII value in Swift?你可以试试这个:
extension String {
var asciiArray: [UInt32] {
return unicodeScalars.filter{$0.isASCII}.map{$0.value}
}
}
extension Character {
var asciiValue: UInt32? {
return String(self).unicodeScalars.filter{$0.isASCII}.first?.value
}
}
"ball".lowercased().asciiArray.forEach { print($0 - 96) }
请注意,这仅适用于小写字符串,因为计算是基于 ASCII 的,因此 97 等于“a”,98 等于“b”,依此类推。如果您想将其调整为大写字符串,则需要使用此行:
"UPpER".uppercased().asciiArray.forEach { print($0 - 64) }
关于swift - 尝试使用 Swift 获取 String 中单个字符的 ASCII 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46637075/