2016-02-26 46 views
0

我試圖與{在Java中使用下面的代碼替換[無法替代[以{

String expectedTimeCriteria = "Month Days=" + monthDays.toString().replaceAll("[", "{"); 

但是,這將引發以下錯誤:

java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ 
                      ^

能否請你幫我理解這裏出了什麼問題?

+0

請寄實際的字符串.. –

回答

1

使用replace()代替replaceAll()作爲replaceAll()是用來與正則表達式和[攜帶的正則表達式有特殊的含義。

replace()另一方面需要一個字符串並執行與replaceAll()相同的功能。

更正代碼段:

String expectedTimeCriteria = "Month Days=" + monthDays.toString().replace("[", "{"); 

或者,您可以使用轉義字符如下:

String expectedTimeCriteria = "Month Days=" + monthDays.toString().replaceAll("\\[", "{"); 
+0

謝謝user2004685 !!! – TDHM

+0

@TDHM歡迎您! :) – user2004685

2

String#replaceAll確實使用正則表達式,所以你有對正則表達式的語法在思邁特錯誤這個案例。如果你只是想用{替換全部[,你可以使用String#replace方法,它不使用正則表達式,並且仍然會替換搜索到的每一個字符串。

monthDays.toString().replace("[", "{"); 
+0

謝謝Kevin Esche !!! – TDHM

0

你必須與\\[

String expectedTimeCriteria = "Month Days=" + monthDays.toString().replaceAll("\[", "{"); 
+1

這是錯誤的!它甚至不會編譯。它應該是'\\ ['而不只是'\ ['。 – user2004685

+0

你說得對。我將它固定在答案中 – eztam

1

String.replaceAll() ecape的[字符需要兩個參數,正則表達式和替換字符串。當你傳遞「[」作爲正則表達式時,Java試圖將它編譯成一個正則表達式,並希望看到關閉「]」。這就是爲什麼你越來越

java.util.regex.PatternSyntaxException: Unclosed character class near index 0 [ 

你需要轉義字符「\ [」,這應該工作。