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}"]
みたいに配列そのものを文字列として表現されてしまいます。