2009-03-04 156 views

回答

74

你需要躲避+正則表達式,使用\

但是,Java使用String參數來構造正則表達式,它使用\作爲自己的轉義序列。所以,你必須逃離\本身:

"\\+" 
+1

我有壞習慣在構建正則表達式然後運行.replace('/','\\')時使用'/',這樣我就不必輸入「\\\\」以匹配文字反斜槓。 – 2009-03-04 12:49:49

+2

如果你想替換一個固定的字符串,Pattern.quote(String)是一個非常好的朋友。 – gustafc 2009-03-04 13:06:23

13

您需要用\轉義+,因爲\本身就是Java字符串中的一個特殊字符,您需要用另一個\來轉義它。

因此,您的正則表達式字符串將在Java代碼中定義爲「\\ +」。

I.e.下面這個例子:

String test = "ABCD+EFGH"; 
test = test.replaceAll("\\+", "-"); 
System.out.println(test); 
29

有疑問時,讓Java的爲你做的工作:

myStr.replaceAll(Pattern.quote("+"), replaceStr); 
+0

這是一個很好的技術 - 謝謝。 – 2009-03-04 16:50:50

+0

這還不夠。 replaceStr也需要引用替換的東西。爲什麼不使用`myStr。替換(「+」,replaceStr)` – user102008 2011-06-20 09:41:27

3

如果你想要一個簡單的字符串查找和替換(即你不「T需要正則表達式),它可能是簡單的使用StringUtils from Apache Commons,這樣可以讓你寫:

mystr = StringUtils.replace(mystr, "+", "plus"); 
1

其他人已經指出的正確方法:

  1. 擺脫+作爲\\+
  2. 使用Pattern.quote方法,其逸出所有正則表達式元字符。

另一種可以使用的方法是將+放在字符類中。許多正則表達式元字符(.,*,+以及其他許多字符)在字符類中被逐字處理。

所以,你也可以這樣做:

orgStr.replaceAll("[+]",replaceStr); 

Ideone Link

2

說你想用\\\-更換-,用途:

text.replaceAll("-", "\\\\\\\\-"); 
1
String str="Hello+Hello"; 
str=str.replaceAll("\\+","-"); 
System.out.println(str); 

OR

String str="Hello+Hello"; 
str=str.replace(Pattern.quote(str),"_"); 
System.out.println(str); 
相關問題