ASCII码160的特殊空格无法使用trim()方法去除

ASCII码160的空格无法使用trim()方法去除的问题:

今天导入excel数据的时候,手机号码一直报格式错误无法导入,正则表达式完全没有问题,经过排查是由于导入的手机号码末尾有空格,但是这些空格是无法通过trim()去除掉,然后我查看这空格ASCII码居然是160(不间断空格non-breaking space)!

在线查询ASCII码链接: https://www.qqxiuzi.cn/bianma/ascii.htm

我做的一个实践示例代码:

	 public static void main(String[] args) {
	//      11号手机号码,后面有三个不间断空格( 造成的,Ascii码为160)和最后一个正常的空格(中英文半角全角空格都行!Ascii码为32)
	    String tel  = "17852255001    ";
	    String temp;

        System.out.println("11位手机号码加3个不间断空格加1个正常空格:" + tel.length());
        System.out.println("11位手机号码加3个不间断空格加1个正常空格.trim(),只能去掉正常的空格:" + tel.trim().length());

        // 替换所有的不间断空格,也可以用正则(这就不写了!)
        temp = tel.replaceAll("\\u00A0+", "");

        System.out.println("11位手机号码加3个不间断空格加1个正常空格,replaceAll去掉了3个不间断空格:" + temp.length());
        System.out.println("11位手机号码加3个不间断空格加1个正常空格,replaceAll去掉了3个不间断空格,trim()去掉1个正常空格:" + temp.trim().length());

	//      ###########################################################
	//      #
	//      # https://www.qqxiuzi.cn/bianma/ascii.htm   可以查Ascii码
	//      #
	//      ########################################################
	
	
	//      1. 英文模式下的(半角)空格,能用trim()去除掉, 对应的ASCII码为 32
	        String space1  = " ";
	//      2. 中文模式下的(全角)空格,能用trim()去除掉, 对应的ASCII码为 32
	        String space2  = " ";
	//      3. 网页由   生成的空格(学名:不间断空格 non-breaking space),不能用trim()去除掉, 对应的ASCII码为 160
	        String space3  = " ";
	        System.out.println("英文(半角)空格.trim()后的length: " + space1.trim().length());
	        System.out.println("中文(全角)空格.trim()后的length: " + space2.trim().length());
	        System.out.println("不间断空格.trim()后的length: " + space3.trim().length());
	
	 }
输出结果:
11位手机号码加3个不间断空格加1个正常空格:15
11位手机号码加3个不间断空格加1个正常空格.trim(),只能去掉正常的空格:14
11位手机号码加3个不间断空格加1个正常空格,replaceAll去掉了3个不间断空格:12
11位手机号码加3个不间断空格加1个正常空格,replaceAll去掉了3个不间断空格,trim()去掉1个正常空格:11
英文(半角)空格.trim()后的length: 0
中文(全角)空格.trim()后的length: 0
不间断空格.trim()后的length: 1

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值