Java中去除空格

2021-09-01 10:00:22 字數 892 閱讀 7758

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、擴充套件

作為擴充套件,查了一下空格的定義,不看不知道,一看才知道,原來空格的定義是很寬泛的(參見維基百科中的「空格」[url]其中我們討論到的0xe38080是一種表意文字空格。一般我們所說的空格包括了以下幾個部分:空白字元包括 "空格" (u+0020), "製表符" (u+0009), "換行" (u+000a), "回車" (u+000d), 及 "換頁" (u+000c)。其他看似空白的字元,例如 "em-space" (u+2003) 及 "ideographic space" (u+3000,表意空格) 不是空白的一部分,注意是看似空白的。

js中去除空格

在string中有個去除空格的方法spilt 在js中也經常要去除空格,本人從網上找了一些方法,如下 1.去除所有空格 str str.replace s g,去除兩頭空格 str str.replace s s g,2.function ltrim str function rtrim str f...

js中去除空格

在string中有個去除空格的方法spilt 在js中也經常要去除空格,本人從網上找了一些方法,如下 1.去除所有空格 str str.replace s g,去除兩頭空格 str str.replace s s g,2.function ltrim str function rtrim str f...

QString中去除空格

使用正規表示式 qsring.remove qregexp s 例項 qstring str aa 字串aa前後各三個空格 str.remove qregexp s 執行結果 str aa 使用正規表示式 qsring.remove qregexp s 例項 qstring str aa 字串aa前...