JAVAは全角半角相互変換(full 2 Half&half 2 Full)を実現

2535 ワード

説明:
1.全角:1つの文字が2つの標準文字の位置を占めることを意味します.漢字文字と全角を規定した英字および国標GB 2312-80の図形記号および特殊文字はすべて全角文字である.一般的なシステムコマンドでは全角文字は使用されませんが、作文処理時には全角文字が使用されます.
2.半角:1文字が標準的な文字位置を占めることを意味します.通常の英字、数字キー、記号キーは半角で、半角の表示内コードは1バイトです.システム内部では,以上の3文字が基本コードとして扱われるため,ユーザがコマンドやパラメータを入力する際に半角を用いるのが一般的である.
 
範囲(スペースなし):
全角文字unicode符号化65281~65374(16進0 xFF 01~0 xFF 5 E)半角文字unicode符号化33~126(16進0 x 21~0 x 7 E)
特例:スペースは比較的特殊で、全角は12288(0 x 3000)、半角は32(0 x 20)
注意:
1.中国語の文字は永遠に全角で、英語のアルファベット、数字のキー、記号のキーだけが全角の半角の概念があって、1つのアルファベットあるいは数字が1つの漢字の位置を占めて全角と言って、半分の漢字の位置を占めて半角と言います.
2.引用符は、中国語と英語、半角では異なります.
JAVAコードリファレンス
ぜんかくかいてんはんかく
     /**
     * 
     * @Title: convertStringFromFullWidthToHalfWidth.
     * @Description: Convert a String from half width to full width.
     * 
     * @param string input string
     * @return the converted String
     */
    public static String full2Half(String string) {
        if (isEmpty(string)) {
            return string;
        }
        
        char[] charArray = string.toCharArray();
        for (int i = 0; i < charArray.length; i++) {
            if (charArray[i] == 12288) {
                charArray[i] =' ';
            } else if (charArray[i] >= ' ' &&
                    charArray[i]  <= 65374) {
                charArray[i] = (char) (charArray[i] - 65248);
            } else {
                
            }
        }


        return new String(charArray);
    }

半角回転全角:
/**
     * this is used to convert half to full-widths charaters.
    * @Title: half2Full
    * @param value input value
    * @return converted value
     */
    public static String half2Full(String value) {
        if (isEmpty(value)) {
            return "";
        }
        char[] cha = value.toCharArray();

        /**
         * full blank space is 12288, half blank space is 32
         * others :full is 65281-65374,and half is 33-126.
         */
        for (int i = 0; i < cha.length; i++) {
            if (cha[i] == 32) {
                cha[i] = (char) 12288;
            } else if (cha[i] < 127) {
                cha[i] = (char) (cha[i] + 65248);
            }
        }
        return new String(cha);
    }

    /**
     * @Description: check whether is empty.
     * @Title: isEmpty
     * @param str input string
     * @return whether the input is empty
     */
    public static boolean isEmpty(String str) {
        return str == null || str.length() == 0;
    }