如何去除字符串当中的空白字符


程序处理当中经常需要对字符串进行一些处理,常见的有java.lang.String自带的trim()方法,还可以通过正则表达式的普通空白字符的匹配进行替换处理,示例程序如下

public static void main(String[] args) {
        String s1 = "abc def ghi";
        System.out.println(s1.replaceAll("\\s+", ""));
    }

 

在大部分情形下以上这种代码是能够剔除掉字符串当中的空白字符的,但是仍然有一部分情况会发现这种方法不起作用,其原因在于字符串当中的空白字符并不是手动输入的空格符、换行符等ASCII编码的字符,而是Unicode编码下的各种空白字符,在程序当中用控制台输出的时候其实观察不到,但的确影响到程序功能。比如说当字符串ABCDE的CD之间被插入了一个这样的Unicode空白字符,变成ABCD E,这时候正则表达式 ABCD\\s 就不能够按照如预期匹配到 ABCD空格。

所以,在一部分场合下,我们需要面对混杂着Unicode编码的空白字符的字符串(这个我最经常碰到的是对网页信息抓取,抓取到的HTML源码之间的换行符往往这样),需要有一种方式将这些空白字符串都给过滤掉,下面给出去除这种空白字符串的方法,技术也不难,其实是利用java提供的正则表达式+Unicode属性的正则规则

public static void main(String[] args) {
        String s1 = "abc def ghi";
        System.out.println(s1.replaceAll("\\p{Z}+", ""));
    }

这里的\p{Z} 表示的就是Unicode编码的各种空白字符,上面这一行的具体含义是凡是遇到一个或一个以上的Unicode编码空白字符连续出现,都给去掉。如果想要替换为其他字符,在replaceAll方法的第二个参数换为待替换的字符串即可。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值