我試圖刪除所有行的末尾的所有空格和製表符。刪除Java中每行結尾處的所有空格
我用下面的方法:
string.replace("\\s+$", "");
這裏, 「\ S + $」 是一個正則表達式
看來這是正確的。但事實是我不會刪除它。
的字符串是:
a) AAAAAA.
b) BBBBB.
c) CCCCCC.
d) DDDDD.
我試圖刪除所有行的末尾的所有空格和製表符。刪除Java中每行結尾處的所有空格
我用下面的方法:
string.replace("\\s+$", "");
這裏, 「\ S + $」 是一個正則表達式
看來這是正確的。但事實是我不會刪除它。
的字符串是:
a) AAAAAA.
b) BBBBB.
c) CCCCCC.
d) DDDDD.
像這樣:
string.replaceAll("\\s+$", "");
String#replace()
並不需要一個正則表達式作爲參數。\s
編輯:是它的工作:
public static void main(final String[] args) {
final String a = " AAAAAAAA ";
System.out.println(a.replaceAll("\\s+$", ""));
}
也許你的困惑是,你認爲a.replaceAll()
將修改字符串a
。 Java中的字符串是不可變的(它們不能改變)。 a.replaceAll()
將返回修改後的字符串。
EDIT2:如果您使用多行字符串,"\\s+[$\n]"
正則表達式應該做的工作。
仍然不起作用 – liangwang
@liangwang是的,它確實有效。我添加了一個簡單的例子。 – m0skit0
我認爲這不適用於多行字符串。試着用final String a =「AAAAA \ n BBBB \ n」運行它;看看。波希米亞人的工作。 – JeroenWarmerdam
使用replaceAll()
,它使用正則表達式來找到它的目標,而不是replace()
,它使用純文本作爲其目標。
str = str.replaceAll("(?m)\\s+$", "");
在這裏,我已經添加了(?m)
開關,使克拉和美元賽前/換行,你需要使它的工作給出的多行輸入後。
+1來解釋爲什麼(?m)有所不同。 – JeroenWarmerdam
標誌+1我不知道 – m0skit0
Delete all the space at end of each line in Java
我猜你需要String#trim()方法
使用
string.trim()
返回字符串的一個副本,其中前後空白省略。
修剪會在開始和結束時刪除空格。 – anubhava
是的,我看到第一個例子,aaaa'也沒有正確對齊。我猜OP需要它。 –
你有沒有理由不能使用trim()? – chrylis
請提供更多關於您爲什麼不使用trim()的更多信息 – SirRichie
trim還會刪除開始位置。我不想那麼做 – liangwang