程序员Java学习笔记

Java笔记-Java的trim方法去除不掉空格的时候

2017-03-23  本文已影响1164人  栾呱呱

问题背景:

一般Java项目里,当我们需要做一些数据过滤的时候,往往通过trim方法对数据进行首尾空格删除,然后再通过判断length的长度是否等于0来判断数据是否为空。但是,有时候会出现这样的神奇问题,用该方法过滤不掉某些为空的字符串。如此,一般就是掉进全角空格和半角空格的坑里面了。

我们来看一下全角空格和半角空格的定义,一般情况,我们不会太关注这个问题:

全角和半角区别:一个汉字字符在电脑上要占两个英文字符的位置,当你输入符号的时候全角的字符也是要占两个英文字符的位置,半角的只占一个字符也就是半个汉字的位置。这就是全角和半角的区别。通常的英文字母、数字键、符号键都是半角的,半角的显示内码都是一个字节。半角全角主要是针对标点符号来说的,全角标点占两个字节,半角占一个字节。而不管是半角还是全角,汉字都还是要占两个字节,在编程序的源代码中只能使用半角标点(不包括字符串内部的数据)。

我们再来看下Java的trim方法:

trim方法只能去除首尾的半角空格,对全角空格无效

For Example:

String space1 = " "; // 全角空格,输入法把全角勾上,就可以打出全角字符
String space2 = " "; // 半角空格
System.out.println(space1.trim().length); // 2
System.out.println(space2.trim().length); // 0

解决方案:

parameter.replaceAll("[ | ]", " ").trim().length() == 0
parameter.replaceAll("\\s","")
上一篇 下一篇

猜你喜欢

热点阅读