2018年5月6日日曜日

【Node.js】ひらがな→ローマ字変換

とある事情でひらがなをローマ字に変換する必要があったので、ちょっとコードを書いてみました。

仕様はこんなかんじ。
  • ヘボン式
  • 単独の「ぁ」「っ」「ゎ」などは、xをつける(xa / xtsu / xwa
  • uuouooなどはそのまま(「とうきょう」→toukyou
  • ひらがな以外の文字は変換しない

どんなコード?

Gistに投稿してみました。普段はちゃんとECMAScriptで書いてBabelで変換したりNPMパッケージ化したりいろいろやるんですが、今回はとりあえず手元のNode(v6.11.5)でそのまま動くものを書きました。

………………。

うわっめんどくせっ!

クソコードすぎんだろ、というツッコミは甘んじて受け入れます。

自分でも書いていて「なんとかエレガントにロジックに落とし込めないかな?」と考えましたが例外ケースが多すぎて途中で諦めました。

一応解説

解説いりますかね?そもそも使いますかね?
何も難しいところはなく、単なる変換テーブルからの最長一致検索です。

まあ工夫といえば、変換テーブルを上からなめていくのではなくて同じ長さの文字をオブジェクトにまとめているのでそれなりに速いということです。

エレガントに書けばいいってものではないんですよ!!!(必死)

改良方針

ヘボン式でない普通の表記ならある程度規則性がありそうなので、何らかのロジックで普通のローマ字に変換→ヘボン式変換テーブルで微調整、とやればきれいに書けるかもしれません。
誰か暇な人やっといてください。

ただし、速度は今の力技クソコードより遅くなりそうですが。

あとは、最後に省略母音変換(uuuou / ooo)を入れるのもいいですね。ただし、ただのパターンマッチングでは井上さん(inoue)も変換されてしまうので何か工夫が必要になりそう。

0 件のコメント:

コメントを投稿