2016-03-07 48 views
-1

我試過內置方法String#replaceAll()從我的String內容中替換所有「$」。但它不起作用。

String ss = "HELLO_$_JAVA"; 
System.out.println(ss.indexOf("$")); 
System.out.println(ss); 
ss = ss.replaceAll("$", ""); 
System.out.println(ss);// 'HELLO__JAVA' is expected 

OUTPUT:

6 
HELLO_$_JAVA 
HELLO_$_JAVA 

預期輸出:

6 
HELLO_$_JAVA 
HELLO__JAVA 

編輯: 雖然Java regular expressions and dollar sign涵蓋了答案,但是還是我的問題可能是誰正面臨着同樣的人有幫助使用時的問題String#replaceAll()。 和 Difference between String replace() and replaceAll()也可能有幫助。這個問題的

兩個可能的解決方案是

ss = ss.replace("$", ""); 

OR

ss = ss.replaceAll("\\$", ""); 
+4

爲什麼'HELLO _ $ _ JAVA'是預期的輸出? '_'從哪裏來? –

+1

我發現''HELLO $ JAVA''字符串被打印爲'HELLO _ $ _ JAVA' – Shark

+1

,就像前面的評論暗示的一樣,你的代碼與你所顯示的輸出不匹配。這不是它的工作方式。 – eis

回答

-1

可能不是最好的方式,但周圍的工作,

String parts[] = ss.split("\\$"); 

然後CONCAT他們每個人的

String output = ""; 
for(String each:parts){ 
    output=output+each; 
} 

然後你有你的替換字符串中輸出

+0

爲什麼要op做這個? – eis

+0

@eis只是一個工作。 – Nabin

+1

相當於頂端,而不是使用正則表達式來分割'$',並且將數組連接起來,他可以用正確的正則表達式替換它。 – SomeJavaGuy

7

第一replaceAll方法的參數需要正則表達式,而不是字面st ring和$在正則表達式中有特殊的含義。

您需要通過在其前面放置反斜槓來轉義$;並且反斜槓需要加倍,因爲它在Java字符串中具有特殊的含義。

ss = ss.replaceAll("\\$", ""); 
相關問題