竹形誠司 ブログ
Java+MySQL+Tomcat    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
全角←→半角の変換
by 竹形 誠司[takegata]
縦書きで宛名を印刷する場合などのために、英数記号を半角から全角に変換するプログラムを書きました。たとえば、半角アルファベットのEはHANKAKU文字列の5番目に出てきますが、han2zenメソッドではこの文字をZENKAKU文字列の5番目にある全角のEに置き換えます。

package jp.veltec.util;

public class TextConvertor{

    static final String HANKAKU
        ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
        +"0123456789!¥"#$%&'()*+,-./:;<=>?@[¥¥]^_`{|}~。、・「」";

    static final String ZENKAKU
        ="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
        +"abcdefghijklmnopqrstuvwxyz"
        +"0123456789!”#$%&’()*+,−./:;"
        +"<=>?@[¥]^_`{|}〜。、・「」";



    public static String han2zen(String aString){
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < aString.length(); i++) {
            char c = aString.charAt(i);
            int p = HANKAKU.indexOf(c);
            if(p==-1){
                sb.append(c);
            }else{
                sb.append(ZENKAKU.charAt(p));
            }
        }
        return sb.toString();
    }

    public static String zen2han(String aString){
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < aString.length(); i++) {
            char c = aString.charAt(i);
            int p = ZENKAKU.indexOf(c);
            if(p==-1){
                sb.append(c);
            }else{
                sb.append(HANKAKU.charAt(p));
            }
        }
        return sb.toString();
    }



}


かならずしも効率のよい方法ではないかもしれませんが、この方法のメリットは置き換える文字のペアを簡単に定義できることです。上の例で半角のマイナスを全角のダッシュに置き換えることができます。全角のマイナス記号は縦書きでも横棒として表示されてしまいますが、ダッシュは(縦書きに対応しているフォントやプログラムを使えば)縦棒として表示されます。

同じ方法を使って、ひらがなとカタカナの変換などもできそうです。ただ、カタカナの「ヴ」に相当する文字がひらがなには無いので、この文字だけは別途の処理が必要になります。

ソースソース
TextConvertor.java

投稿:竹形 誠司[takegata]/2011年 05月 08日 02時 39分 /更新:2011年 05月 08日 03時 00分