2017-06-26 36 views
0

我嘗試從字符串去除特殊字符,但問題是唯一的「?」仍然在輸出字符串中,而其他字符被正確刪除。爲什麼我的replaceAll不行

String[] special = {"\\*",";","_","=", "\\[", "\\]", ":", "\\?", "-", "\\.", 
"\\)", "\\(", "/", "!", "#", ",", "\"", "「", "」"}; 
    for (int i = 0; i < special.length; i++) { 
     source = source.replaceAll(special[i], ""); 
    } 

這是我的字符串

https://file.io/JjiLhD

+0

的[此]複製(https://stackoverflow.com/questions/13696461/replace-special-character-with-an-escape-preceded- java中的特殊字符)SO問題。 –

+0

的可能的複製[使用轉義替換特殊字符之前在Java中的特殊字符(https://stackoverflow.com/questions/13696461/replace-special-character-with-an-escape-preceded-special-character-in- JAVA) –

+0

我知道這是重複的,我知道如何更換工作,但我只是想知道爲什麼問號仍然出現在我的文字爲什麼別人是正確的更換 –

回答

4

您應該使用replace代替replaceAll因爲replaceAll使用輸入正則表達式

for (int i = 0; i < special.length; i++) { 
     source = source.replace(special[i], ""); 
    } 

replace是相同的功能與replaceAll但不同的輸入

替換該字符串與指定文字替換序列字面靶 序列匹配的每個子字符串。

+0

感謝您的答案,但是當我使用替換它會做1次,但replaceAll全部替換我的上下文還有「?」出現:( –

+1

不,'replace'確實替換了所有的任務,你可以試試看,這是java的命名問題,你可以閱讀javadoc瞭解它 – Jerry06

0

試試這個爲alphanumeric個字符。

.replaceAll("[^a-zA-Z0-9]", "")); 

和僅alphabetical字符,

.replaceAll("[^a-zA-Z]", ""));