2015-04-19 114 views
1

我在其中一個程序中出現了一個奇怪的問題,我只想替換每個出現的「||」在字符串中帶有「OR」,但由於某種原因,它用「OR」替換每個空格,是「|」某種逃生角色或某種東西?如何替換'|'在java中的字符串中的字符?

我一直在使用這個語句來做到這一點

ans = ans.replaceAll("||", "OR"); 

有誰知道發生了什麼事或我怎麼能解決這個問題?

回答

5

replaceAll使用正則表達式語法和正則表達式|是運營商代表OR操作,這意味着"||"被解釋爲正則表達式:

"""""" - 空字符串或者爲空或空字符串

如果你想改變|成文字,你需要通過之前加入\(字符串逃脫它例如\需要寫入如"\\")。

但爲了避免這種混淆,你可以使用replace而不是replaceAll這將爲你逃避一部分。

所以不是

ans = ans.replaceAll("||", "OR"); 

ans = ans.replace("||", "OR"); 
+0

你學到新的東西每天簡單地使用,多謝 – TehDude

+0

@TehDude歡迎您:) – Pshemo

+0

@TehDude因爲你似乎很新的堆棧溢出你應該閱讀[接受回答機制](http://meta.stackexchange.com/a/5235/186652)。你也應該接受這個答案:http://stackoverflow.com/a/29335208/1393766因爲你自己說這是對你以前的問題的完美解決方案。 – Pshemo

1

replaceAll函數使用正則表達式來匹配字符。由於|是正則表達式中的特殊字符,因此您需要在正則表達式中跳過|符號以匹配文字|符號。

ans = ans.replaceAll("\\|", "OR"); 

這將OR取代每|符號。

對於兩個管道符號。

ans = ans.replaceAll("\\|\\|", "OR"); 

這將替換每兩個管道符號||OR

4

你可以使用replace其犯規的使用正則表達式中的第一個參數

ans = ans.replace("||", "OR");