在Swift中从单个字符串转换为ASCII值的最简单方法是什么? [英] What's the simplest way to convert from a single character String to an ASCII value in Swift?
本文介绍了在Swift中从单个字符串转换为ASCII值的最简单方法是什么?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只想在Swift中获取单个字符字符串的ASCII值.这是我目前的操作方式:
I just want to get the ASCII value of a single char string in Swift. This is how I'm currently doing it:
var singleChar = "a"
println(singleChar.unicodeScalars[singleChar.unicodeScalars.startIndex].value) //prints: 97
这太丑了.一定有更简单的方法.
This is so ugly though. There must be a simpler way.
推荐答案
编辑/更新Swift 5.2或更高版本
extension StringProtocol {
var asciiValues: [UInt8] { compactMap(\.asciiValue) }
}
"abc".asciiValues // [97, 98, 99]
在Swift 5中,您可以使用新的字符属性 isASCII 和 asciiValue
Character("a").isASCII // true
Character("a").asciiValue // 97
Character("á").isASCII // false
Character("á").asciiValue // nil
旧答案
Old answer
您可以创建扩展程序:
Swift 4.2或更高版本
extension Character {
var isAscii: Bool {
return unicodeScalars.allSatisfy { $0.isASCII }
}
var ascii: UInt32? {
return isAscii ? unicodeScalars.first?.value : nil
}
}
extension StringProtocol {
var asciiValues: [UInt32] {
return compactMap { $0.ascii }
}
}
Character("a").isAscii // true
Character("a").ascii // 97
Character("á").isAscii // false
Character("á").ascii // nil
"abc".asciiValues // [97, 98, 99]
"abc".asciiValues[0] // 97
"abc".asciiValues[1] // 98
"abc".asciiValues[2] // 99
这篇关于在Swift中从单个字符串转换为ASCII值的最简单方法是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文