2016-07-07 32 views
0

我想這些跡象在下面的代碼之前刪除空格:的Java的replaceAll代碼以刪除空格

!= = < > 

輸出應該是:

(name=john or name=Robert) and salary!=10000 


class myPreg{ 
public static void main(String[] args){ 

String s=" (name = john or name=Robert) and salary != 10000 "; 

s= s.replaceAll("[a-zA-Z0-9_]\\s+[!=|=|>|<]\\s+[a-zA-Z0-9]", "[a-zA-Z0-9_][!=|=|>|<][a-zA-Z0-9_]"); 

System.out.println(s); 

} }// main class 
+0

是否要刪除_and_之前或之前的空格? –

回答

4

這應做到:

String s = " (name = john or name=Robert) and salary != 10000 "; 
s = s.replaceAll("\\s+(!=|=|>|<)\\s+", "$1"); 
System.out.println(s); 

輸出:

(name=john or name=Robert) and salary!=10000 

如果你也想擺脫尾隨和前導空格的,添加一個調用trim()

+0

你能解釋replaceAll函數的每個部分嗎? – Michael

1

由於每JavaDocreplaceAll方法將正則表達式作爲第一個參數,將一個字符串作爲第二個參數。

就你而言,既然你知道你想在手前匹配什麼,你可以簡單地做如下:s = s.replaceAll("\\s+([=<>]|(!=))", "$1");

這將用符號本身替代所有的空格,然後是=,<,>!=。在這種情況下,$1具有特殊含義,因爲它引用正則表達式捕獲的第一個組。

既然你似乎在之後也有空白,你也可以使用這個:s = s.replaceAll("\\s+([=<>]|(!=))\\s+", "$1");