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

来源:互联网 发布:怎样做淘宝优惠群 编辑:程序博客网 时间:2024/05/15 01:49


程序处理当中经常需要对字符串进行一些处理,常见的有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方法的第二个参数换为待替换的字符串即可。

0 0