Tuesday, August 4, 2009 / Java

ひらがなの濁音を清音に変換するには

ドキュメントの最後につける索引ページ、その索引語句をソートするときに 濁音を静音として評価してソートする必要がある場合があります。 このエントリーではその場合の対処例を書きます。

sed による変換

sed を使えば以下の通り。

y/がぎぐげご/かきくけこ/
y/ざじずぜぞ/さしすせそ/
y/だぢづでど/たちつてと/
y/ばびぶべぼ/はひふへほ/
y/ぱぴぷぺぽ/はひふへほ/

これを dakuon2seion.sed というファイルに保存し、処理対象となるファイルが foo.txt であれば・・・

$ sed -f dakuon2seion.sed foo.txt > r.txt

とすれば、r.txt に清音に変換した結果が出力されます。

Javaによる変換

sedによる変換ですが、Cygwin上で行うとうまくいかないようです。(Ubuntu8.04等で処理すると意図通り変換される。) 詳しく調べていないのですが、Cygwinでインストールできる sed コマンドはUTF-8に対応していないのかもしれません。

そこで、CygwinでもLinuxでも意図通り変換できるように、Javaで書き直したのが以下のコード。

public class DakuonToSeion {
    private static final String dakuon="がぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽ";
    private static final String seion ="かきくけこさしすせそたちつてとはひふへほはひふへほ";

    public String conv(String s){ 
        for(int i=0; i<dakuon.length(); i++){
                String s1=dakuon.substring(i,i+1);
                String s2=seion.substring(i,i+1);

                s=s.replaceAll(s1,s2);
        }

        return s;
    }
}

地味にひとつずつ変換...芸のないコードですが、とりあえず意図通り作動しているようです。