こんにちは、sasimiです。
今回は、auのメールの絵文字を扱うプログラムを作成するためにJISコードの文字列を分けるメソッドを作成してみました。
JISコードのエスケープシーケンスは
日本語と文字コード
文字コード表 JISコード(ISO-2022-JP)
を参照してください。
絵文字はどうやら漢字に切り替えられるところから始まるようです。
ならば、と漢字に切り替えてから他のエスケープシーケンスに切り替えているところまでを絵文字として取りだすようにします。
def emoji_parse_html(string)
array = Array.new
while (string)
if string =~ /(.+?)\c[\$B([\s\S]+?)\c[(\(B|\(J|\$@|\$B)([\s\S]+)/
array << $1
array << "#{[0x1b].pack("c")}\$B#{$2}#{[0x1b].pack("c")}#{$3}" # ここが絵文字のところ(絵文字が含まれてるところ)
string = $4
else
array << string
string = nil
end
end
array
end
文字列を、絵文字の前、絵文字、絵文字の後、に分けてます(正確には絵文字と漢字の文字列)。
これをstringがnilになるまで繰り返すことで、絵文字と漢字が現れるごとに配列にとりだすメソッドになります。
正規表現を極めている方にはもっとキレイに書けると思います。
挑戦してみてください。
このように配列にして分解することで、あとは絵文字の部分だけを抜き出し、絵文字をUnicodeに変換するような作業が簡単になります。