2012-09-03 17 views
2

如何將字符串AXA || BXB && CXC || BXB替換爲AXA OR BXB && CXC OR BXB如何將字符串「AXA || BXB && CXC || BXB」替換爲「AXA或BXB && CXC或BXB」?

我試圖

expression = "AXA || BXB && CXC || BXB"; 
expression = expression.replaceAll("||", " OR "); 

但這並不提供所希望的結果,即AXA OR BXB && CXC OR BXB

+2

它提供什麼樣的結果呢? – Femaref

+0

你實際上是在試圖在這裏指定的盲目字符替換嗎,還是試圖解析? – delnan

+1

raplaceAll使用正則表達式,'''是一個特殊的字符,試着做字符串'expression.replaceAll(「\\ | \\ |」,「OR」);' – Augusto

回答

1

replaceAll使用一個正則表達式,以及|是一個特殊字符,這意味着交替。因此,你需要逃生它才能使用文字|

String s = "AXA || BXB && CXC || BXB"; 
System.out.println(s.replaceAll("\\|\\|", "OR")); 

或者更好的是,只使用replace(),不使用正則表達式:

String s = "AXA || BXB && CXC || BXB"; 
System.out.println(s.replace("||", "OR")); 
1

replaceAll需要正則表達式作爲其第一個參數,請嘗試使用replace

4

而不是使用正則表達式,嘗試replace例程,而不是

expression = "AXA || BXB && CXC || BXB"; 
expression = expression.replace("||", " OR "); 
+0

@Pshemo,你說的對, *仍然*編譯['Pattern'](http://www.docjar.com/html/api/java/lang/String.java.html)對象。否則['StringUtils.replace(..)'](http://commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html)是一個很好的選擇。 –

+0

你是對的,它'替換(char,char)'逃避正則表達式。我刪除了以前的評論,因爲它是虛假信息。 – Pshemo

0

你需要跳脫出|

String expression = "AXA || BXB && CXC || BXB"; 
expression = expression.replaceAll(" ?\\|\\| ?", " OR "); 
System.out.println(expression); 

打印

AXA OR BXB && CXC OR BXB 
0

人們很容易忘記所有的特殊字符是在正則表達式。我現在習慣於在我想要包含任何非字母數字字符的字面上使用String Pattern.quote(String s)

(如果這種情況是因爲你描述的簡單,我同意更換()是更好的選擇。)

相關問題