2011-08-31 197 views
0

我一直試圖從幾秒鐘內從下面的字符串中刪除度攝氏度符號。我查看了之前的帖子,我發現/ u2103是它的Unicode代表。儘管試圖刪除該字符串,但我仍然沒有運氣。這是我現在有:如何從字符串中刪除攝氏度符號(java)

String temp = "Technology=Li-poly;Temperature=23.0 <degree symbol>C;Voltage=3835"; 
StringBuilder filtered = new StringBuilder(temp.length()); 
    for (int i = 0; i < temp.length(); i++) { 
char test = temp.charAt(i); 
if (test >= 0x20 && test <= 0x7e) { 
    filtered.append(test); 
} 
} 

temp = filtered.toString(); 

temp.replaceAll(" ", "%20"); 

結果字符串看起來是這樣的: 技術=鋰聚合物;溫度= 23.0Ç;

我也試過

temp.replaceAll("\\u2103", ""); 
temp.replaceChar((char)0x2103, ' '); 

但這一切工作。

我目前的問題是過濾字符串的函數會留下一個空白區域,但調用replaceAll(「」,「%20」)似乎無法識別該特定空間。 ReplaceAll將用%20替換其他空格。

+0

你確定它是'\ u2103'而不是'\ u00B0'嗎? – corsiKa

回答

4

這是一個問題:

temp.replaceAll(" ", "%20"); 

你打電話replaceAll但從來沒有使用的結果。字符串是不可變的 - 任何方法看起來像它改變的內容其實是返回不同的字符串作爲結果。你想:

temp = temp.replaceAll(" ", "%20"); 

話雖如此,但爲什麼你想在所有的替代空間,也沒有什麼錯你得到的字符串目前尚不清楚。

您與其他temp.replaceAlltemp.replaceChar調用有相同的問題。

爲你逃避反斜槓您試圖直接替換的字符也將失敗 - 你真的想:

temp = temp.replace("\u2103", ""); 

注意使用的replace代替replaceAll - 後者使用正則表達式,這有這裏根本不需要使用。

+0

謝謝!這工作!我不需要雙反斜槓,我應該使用替換,而不是replaceAll。 – user836200