字母和数字半角和全角的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/y41992910/article/details/88051168

有的时候,我们没有限制用户输入的字母数字是半角或者全角。
但是默认一般各个系统在证件号码方面全部都是半角的(数字和字母,是AS编码,占一个字节)。所以当用户输入全角的字母和数字的时候,我们需要处理一下,提示它错误,或者后台自动给他把全角改成半角。

半角:N,1,我
全角:N,1,我
在这里插入图片描述

代码转换

//全角转为半角
    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;

相关知识

A 什么是全角和半角?
(1)全角–指一个字符占用两个标准字符位置。
汉字字符和规定了全角的英文字符及国标GB2312-80中的图形符号和特殊字符都是全角字符。一般的系统命令是不用全角字符的,只是在作文字处理时才会使用全角字符。

(2)半角–指一字符占用一个标准的字符位置。
通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。在系统内部,以上三种字符是作为基本代码处理的,所以用户输入命令和参数时一般都使用半角。

B 全角与半角各在什么情况下使用?
全角占两个字节,半角占一个字节。
半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节,而不管是半角还是全角,汉字都还是要占两个字节。
在编程序的源代码中只能使用半角标点(不包括字符串内部的数据)
在不支持汉字等语言的计算机上只能使用半角标点(其实这种情况根本就不存在半角全角的概念)

对于大多数字体来说,全角看起来比半角大,当然这不是本质区别了。

C 全角和半角的区别
全角就是字母和数字等与汉字占等宽位置的字。半角就是ASCII方式的字符,在没有汉字输入法起做用的时候输入的字母数字和字符都是半角的。

在汉字输入法出现的时候,输入的字母数字默认为半角,但是标点则是默认为全角,可以通过鼠标点击输入法工具条上的相应按钮来改变。

D 关于“全角”和“半角”:
全角:是指中GB2312-80(《信息交换用汉字编码字符集·基本集》)中的各种符号。
半角:是指英文件ASCII码中的各种符号。

猜你喜欢

转载自blog.csdn.net/y41992910/article/details/88051168