Swift 2 で UnicodeScalar の配列から String を生成する

Swift プログラミング

Swift 2 で UnicodeScalar の配列で扱った文字データを String 型に変換してみました。


Swift 2 の String 型では unicodeScalars プロパティーを使って、文字列を UnicodeScalar というユニコード文字の配列で扱えるようになっています。

この unicodeScalars プロパティーで取得したユニコード文字の配列は実際には String.UnicodeScalarView という型で表現されていて、String 型に簡単に変換できるようになっています。

ただ、サブスライスに切り出したりなど何らかの加工を行って Array<UnicodeScalar> で使うようになったりすると、そのまま簡単に String 型に変換することができなくなります。

Array<UnicodeScalar> を String に変換する

Array<UnicodeScalar>String 型に変換するには、次のようにいったん Character の配列を作って、そこから String に変換します。

let unicodes = [83, 119, 105, 102, 116, 32, 25991, 23383, 21015]

let characters = unicodes.map(Character.init)
let string = String(characters)

こうすることで、適切な文字列に変換することができました。

もし Character の配列に変換しないでそのまま UnicodeScalar の配列を String に変換してしまうと ["S", "w", "i", "f", "t", " ", "\\u{6587}", "\\u{5B57}", "\\u{5217}"] みたいに配列そのものを文字列として表現されてしまいます。