1、起因 今天在解析RSS的Feed的时候,由于需求是需要去掉html标签,仅保留其文本信息。结果在解析某博客的时候发现,解析后的文本信息中前后含有空格,但是在代码已经使用正则表达式替换掉了\t\r\n\f了,并且也使用了trim操作,可怎么还是还是有空格呢? 2、分析 使用了各种正则表达式来进行替换,结果还是有空格,最后没有办法,查看了这些空格的二进制代码,发现这些空格是0xE38080,这跟平常我们的空格是不一样的0x20,怪不得去不掉这个空格呢。可怎么去掉这种空格呢?有人说使用\f(分页符)可以替换掉,有人说使用正则表达式可以替换掉,结果都没有成功(可能是我使用的不对),最后发现使用apache-common的StringUtils.strim()可以去掉,读了一下源代码发现,StringUtils.strim()去空格使用的Character.isSpaceChar()来进行判断的,如果该判断返回为true,则去掉。 3、总结 但是为什么String.trim()去不掉空格呢?读了一些这个源代码,发现这个方法去掉的空格都是ASCII码控制下的一些非可见字符,像0xE38080这种空格是在范围外的,所以去除不掉。关于去除空格的问题,网络上多有讨论,其实大多数都是要求覆盖到尽可能多的空格字符。 4、扩展 作为扩展,查了一下空格的定义,不看不知道,一看才知道