在Swift中从单个字符串转换为ASCII值的最简单方法是什么?
我只想在Swift中获取单个字符字符串的ASCII值。这是我目前正在做的事情:
var singleChar = "a"println(singleChar.unicodeScalars[singleChar.unicodeScalars.startIndex].value) //prints: 97
这太丑了。必须有一个更简单的方法。
回答:
extension StringProtocol { var asciiValues: [UInt8] { compactMap(\.asciiValue) }
}
"abc".asciiValues // [97, 98, 99]
在Swift
5中,您可以使用新的字符属性isASCII和asciiValue
Character("a").isASCII // trueCharacter("a").asciiValue // 97
Character("á").isASCII // false
Character("á").asciiValue // nil
旧答案
您可以创建一个扩展:
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 // trueCharacter("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值的最简单方法是什么? 的全部内容, 来源链接: utcz.com/qa/421075.html