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

问题背景:

一般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

解决方案:

  • 方法一
    使用正则表达式,将全角替换为半角,再使用trim方法。
parameter.replaceAll("[ | ]", " ").trim().length() == 0
  • 方法二
    直接正则表达式,去除全角空格,再使用trim方法
parameter.replaceAll("\\s","")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 摘自:http://blog.csdn.net/kevinhg/article/details/8702462 前...
    罗蓁蓁阅读 8,169评论 0 7
  • 正则表达式到底是什么东西?字符是计算机软件处理文字时最基本的单位,可能是字母,数字,标点符号,空格,换行符,汉字等...
    狮子挽歌阅读 6,488评论 0 9
  • 大家好我是影子酱。 十一老师的文我一直在纠结要不要放出来,但是想来想去还是决定放出来了。 因为很喜欢。 所以希望被...
    十一的影子阅读 1,547评论 0 0
  • 还来吗 一浪 一浪 漫过我的身体 窒息我的喉 要走吗 一次 又一次 洗刷我的灵魂 掏空我的心 真的不舍吗 一遍 一...
    浅浅是水阅读 3,508评论 58 56
  • 文/清一若水 岁月 可是我遇见的苍茫 在无声之间 带走了一处灵魂 安歇在路上 随手将封印的箱口拉开 看见的光辉 远...
    清一若水阅读 3,021评论 0 0