2017-09-04 167 views
0

我需要更換一個字符串$achieved$,它應該是不區分大小寫。因爲有時從服務器的字符串我們得到$ACHIeved$,因此它應該忽略區分大小寫。我使用下面的代碼。替換忽略大小寫

stringWithoutFormating.replace(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved, String.valueOf(achieved)); 

我與(?i)嘗試,以及,但它不是工作。
可以將其與正則表達式來完成,如果是的話應該是什麼正則表達式?

回答

0

首先,replace進行文字字符串替換,並且不接受一個正則表達式作爲第一個參數。您需要使用replaceFirstreplaceAll。接下來,$是一種特殊的正則表達式字符(它匹配字符串的結尾),因此它必須轉義。您可以使用Pattern.quote。所以,你可以使用

stringWithoutFormating = stringWithoutFormating.replaceAll("(?i)" + Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved), String.valueOf(achieved).replace("$", "\\$")); 

這裏,(?i)會讓搜索不區分大小寫,Pattern.quote(Constant.PROGRAM_DETAILS_ENTRY_CONTENT_FIELDS.achieved)會變成$achieved$\$achieved\$,然後更換會發生。關於更換執行.replace("$", "\\$")是必要的更換逃脫文字$