去除空格无法用正则 \\s+ 这种形式, 发现是特殊空格搞得鬼

无法用正则 \\s+去除空格

1. 普通的空格
这一串是我自己手动的空格

进行正则

 String text = "a   b ccc ddd    eee f g";
        String[] split = text.split("\\s+");
        for(String s : split){
            System.out.println(s);
        }

输出结果:
在这里插入图片描述


2. 特殊的空格

自己利用爬取到的数据转换成字符串类型的数据

进行正则

String text = "深圳-宝安区    无需经验    大专    招2人    07-31发布";
        String[] split = text.split("\\s+");
        for(String s : split){
            System.out.println(s);
        }

输出结果:
在这里插入图片描述


刚开始不知道原因,就利用正则 \\s*来进行截取,发现可以把所有都截成一个…
使用bebug无意间点开了value,发现这个空格的ascii码是 160
在这里插入图片描述
于是好奇自己手打空格的ascii码
在这里插入图片描述
发现是32


于是百度了一下特殊空格ascii160得到解决方法:

得到方法: 利用不间断空格的Unicode编码来移除它,其编码为\u00A0。

于是可以这样写

String text = "深圳-宝安区    无需经验    大专    招2人    07-31发布"; 
        String[] split = text.split("\\u00A0+");
        for(String s : split){
            System.out.println(s);
        }

说明: 把特殊的空格复制到文章这里,然后重新复制回去…会变成ascii码32的空格

结果
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值