2017-07-28 77 views
0

我收到服務器的字符串尾隨一行或兩行空格,如下面給出的字符串。Java字符串修剪功能不起作用

String str = "abc*******   
      ********"; 

考慮*空格我的字符串後

我已經嘗試了一些方法,如

str = str.trim(); 

str = str.replace(String.valueOf((char) 160), " ").trim(); 

str = str.replaceAll("\u00A0", ""); 

,但沒有工作。 爲什麼我無法刪除空間?

+0

尋求調試幫助的問題(「爲什麼不是這個代碼工作?」)必須包括所需的行爲,特定的問題或錯誤,在問題本身中重現它所需的代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建[mcve]。使用「編輯」鏈接來改善你的*問題* - 不要通過評論添加更多信息。謝謝! – GhostCat

+1

放心:trim()正在工作。但是我們無法幫助您在代碼中發現此類輸入中的問題。換句話說:提供一個**真實** [mcve],使我們能夠重現問題。 – GhostCat

+0

角色真的是空格嗎?或者一些特殊字符?這是你的字符串中的換行符? – f1sh

回答

0

你應該嘗試這樣的:

str = str.replaceAll("\n", "").trim(); 

你可以觀察到存在這樣字符串的新線。首先用空格(「」)替換新行「\ n」而不是修剪

+0

我不明白。該文檔明確指出'trim'應該刪除Unicode中小於十進制值20的任何字符。 '\ n'具有10的十進制表示,因此修剪應該將其刪除,這不應該有幫助。此外,也許這是一個毫無意義的狡辯,但''''不是空格,''「'是。 '「」'是空的。 – tradeJmark

+0

我知道,但根據她的問題,我明白有一條新線,所以修剪不在那裏工作 – Tufan

+0

''\ n''是一個換行符。 'trim'應該總是刪除換行符。 – tradeJmark

0

你應該這樣做:

str = str.replaceAll("\n", ""); 

在我的情況下使用,以工作中的作用裝飾()

0

試試這個: str = str.replaceAll("[.]*[\\s\t]+$", "");

0

我已經試過你的3種方法,和他們所有的工作。我想說明不正確或完全你的問題,事實上,在Java中的字符串不喜歡

String str = "abc*******   
     ********"; 

他們必須喜歡

String str = "abc*******"   
     + "********"; 

所以我認爲你應該說明你的問題更好地得到幫助。

+0

這難道不是對這個問題的評論嗎?它並沒有真正提供答案。 – tradeJmark