先日、ユニコードに関する問題を解く機会がありました。その際のメモを少し残したいと思います。
言語は、Swift です。
ユニコードとは
TBD
ユニコードから文字列を取得する
ユニコードから文字、つまり Character 型を取得します。
func changeChara(for asciiCode: Int) -> Character {
guard let unicodeScalar = Unicode.Scalar(asciiCode) else { return "?" }
return Character(unicodeScalar)
}
Unicode.Scalar()
は、UnicodeScalar
として使うこともできます。
unicodeScalar
は、TypeAlias です。
文字からユニコードを取得する
ユニコードから文字列を取得するより、こちらの方が簡単に取得することができます。
func changeInt(for text: String) -> [UInt8] {
let asciiCodes = text.compactMap{ $0.asciiValue }
return asciiCodes
}
compactMap
は、各要素に対して、指定された変換を呼び出した結果のうち、nil
ではないものを含む配列を返します。つまり、配列のデータから nil
を取り除いた配列を返します。
map
でも良いのですが、[UInt8?]
となり、後々面倒なので、今回はこの場合を紹介します。