先日、ユニコードに関する問題を解く機会がありました。その際のメモを少し残したいと思います。
言語は、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?] となり、後々面倒なので、今回はこの場合を紹介します。