【工具】JAVA 全角转半角 半角转全角

【工具】JAVA 全角转半角 半角转全角

maven依赖  也可以不用 把判空字符串的那行改一下就行


<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.20</version>
</dependency>

工具代码



import cn.hutool.core.util.StrUtil;

/**
 * 字符工具
 */
public class CharUtil {



    /**
     * 半角转全角的函数(SBC case)
     * 全角空格为12288,半角空格为32,其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
     *
     * @param input 任意字符串
     * @return 全角字符串
     */
    public static String toSbc(String input) {
        if (StrUtil.isBlank(input)) {
            return "";
        }
        char[] c = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 32) {
                c[i] = (char) 12288;
                continue;
            }
            if (c[i] < 127) {
                c[i] = (char) (c[i] + 65248);
            }
        }
        return new String(c);
    }


    /**
     * 全角转半角的函数(DBC case)
     * 全角空格为12288,半角空格为32 其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
     *
     * @param input 任意字符串
     * @return 半角字符串
     */
    public static String toDbc(String input) {
        if (StrUtil.isBlank(input)) {
            return "";
        }
        char[] c = input.toCharArray();
        for (int i = 0; i < c.length; i++) {
            if (c[i] == 12288) {
                c[i] = (char) 32;
                continue;
            }
            if (c[i] > 65280 && c[i] < 65375) {
                c[i] = (char) (c[i] - 65248);
            }
        }
        return new String(c);
    }

    /**
     * 打印出java中所有Unicode编码的字符
     */
    private static void printAllCharacter() {
        for (int i = Character.MIN_VALUE; i <= Character.MAX_VALUE; ++i) {
            System.out.println(i + "   " + (char) i);
        }
    }

    public static void main(String[] args) {
        String str = "半角符号示例:,!~    全角符号示例:,!~";
        System.out.println("半角--->全角转换前:" + str);
        String sbcResult = toSbc(str);
        System.out.println("半角--->全角转换后:" + sbcResult);

        System.out.println("全角--->半角转换前:" + str);
        String dbcResult = toDbc(str);
        System.out.println("全角--->半角转换后:" + dbcResult);
        //打印出java所有字符
//    printAllCharacter();
    }

}