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

有的时候,我们没有限制用户输入的字母数字是半角或者全角。
但是默认一般各个系统在证件号码方面全部都是半角的(数字和字母,是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码中的各种符号。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是符合您要求的60组符号列表: 1. { ",", ",", ",", "," } 2. { ".", "。", ".", "。" } 3. { ";", ";", ";", ";" } 4. { ":", ":", ":", ":" } 5. { "?", "?", "?", "?" } 6. { "!", "!", "!", "!" } 7. { "-", "-", "-", "-" } 8. { "_", "_", "_", "_" } 9. { "@", "@", "@", "@" } 10. { "#", "#", "#", "#" } 11. { "$", "$", "$", "$" } 12. { "%", "%", "%", "%" } 13. { "^", "^", "^", "^" } 14. { "&", "&", "&", "&" } 15. { "*", "*", "*", "*" } 16. { "(", "(", "(", "(" } 17. { ")", ")", ")", ")" } 18. { "[", "[", "[", "[" } 19. { "]", "]", "]", "]" } 20. { "{", "{", "{", "{" } 21. { "}", "}", "}", "}" } 22. { "<", "<", "<", "<" } 23. { ">", ">", ">", ">" } 24. { "=", "=", "=", "=" } 25. { "+", "+", "+", "+" } 26. { "|", "|", "|", "|" } 27. { "\", "\", "\", "\" } 28. { "/", "/", "/", "/" } 29. { "'", "'", "'", "'" } 30. { "\"", """, "\"", """ } 31. { "`", "`", "`", "`" } 32. { "~", "~", "~", "~" } 33. { "¥", "¥", "¥", "¥" } 34. { "¢", "¢", "¢", "¢" } 35. { "£", "£", "£", "£" } 36. { "‰", "‰", "‰", "‰" } 37. { "©", "©", "©", "©" } 38. { "®", "®", "®", "®" } 39. { "™", "™", "™", "™" } 40. { "§", "§", "§", "§" } 41. { "™", "", "", "" } 42. { "@", "", "", "" } 43. { "#", "", "", "" } 44. { "$", "", "", "" } 45. { "%", "", "", "" } 46. { "^", "", "", "" } 47. { "&", "", "", "" } 48. { "*", "", "", "" } 49. { "_", "", "", "" } 50. { "-", "", "", "" } 51. { "+", "", "", "" } 52. { "=", "", "", "" } 53. { "|", "", "", "" } 54. { "\", "", "", "" } 55. { "/", "", "", "" } 56. { "[", "", "", "" } 57. { "]", "", "", "" } 58. { "{", "", "", "" } 59. { "}", "", "", "" } 60. { "<", "", "", "" } 请注意,这些符号列表是根据您的要求生成的,其排序并不代表其实际使用频率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值