1. ホーム
  2. swift

Swiftで1文字のStringからASCII値に変換する最も簡単な方法は何ですか?

2023-07-11 10:51:38

質問

私はSwiftで単一の文字列のASCII値を取得したいだけです。これは、私が現在それをやっている方法です。

var singleChar = "a"
println(singleChar.unicodeScalars[singleChar.unicodeScalars.startIndex].value) //prints: 97

しかし、これはとても醜い。もっと簡単な方法があるはずです。

どのように解決するのですか?

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


古い回答

エクステンションを作成することができます。

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