🐼
localeCompare で漢字をピンイン順に並べたり、a á à を並べたり
はじめに
Pokéctiveness2という、ポケモンの弱点を調べるモバイルウェブアプリを妻のためにつくってあげてましたのでございますが、英語対応したらなぜかインドネシアのバタム島で盛大に使っていただいております
これからバトルという差し迫ったタイミングでスマフォの仮想キーボードでポケモンの名前を悠長に入れるのって UI が間違ってると思ったので、50音で選択して
名前を選択して
表示するようにしてます
英語もアルファベット順でいいとして
中国語はどうしよう… ってずっと悩んでおりました
localeCompare が良い感じ
ポケモンの中国語名の最初の一文字をピンイン順に並べるという方法で香港とかは対応できそうです[1]
でも、漢字をピンイン順にならべるのってどうすればいいんだろ?
と思ってググったらこちらのSOの回答がそのものズバリで
sort(function(x,y){return x.localeCompare(y, 'zh')})
でバッチリでした
フランス語も、日本語も
フランス語もアクサン記号があって悩ましかったのですが
sort(function(x,y){return x.localeCompare(y, 'fr')})
でこの通り
ついでに、実は日本語も最初はこんな表を作って無理やり対応してたのですが
[["あ","ア"],["い","イ"],["う","ウ"],["え","エ"],["お","オ"],
["か","カガ"],["き","キギ"],["く","クグ"],["け","ケゲ"],["こ","コゴ"],
["さ","サザ"],["し","シジ"],["す","スズ"],["せ","セゼ"],["そ","ソゾ"],
["た","タダ"],["ち","チヂ"],["つ","ツヅ"],["て","テデ"],["と","トド"],
["な","ナ"],["に","ニ"],["ぬ","ヌ"],["ね","ネ"],["の","ノ"],
["は","ハバパ"],["ひ","ヒビピ"],["ふ","フブプ"],["へ","ヘベペ"],["ほ","ホボポ"],
["ま","マ"],["み","ミ"],["む","ム"],["め","メ"],["も","モ"],
["や","ヤ"],["ゆ","ユ"],["よ","ヨ"],
["ら","ラ"],["り","リ"],["る","ル"],["れ","レ"],["ろ","ロ"],
["わ","ワ"]
],
localCompare でバッチリでした
sort(function(x,y){return x.localeCompare(y, 'ja')})
感想
localCompare サイコー!
-
台湾はピンインとはまた違う input method がポピュラーみたいです ↩︎
Discussion