在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       // true

Character("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  // 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值的最简单方法是什么? 的全部内容, 来源链接: utcz.com/qa/421075.html

回到顶部