java replaceAll代码删除空格

时间:2016-07-07 05:08:46

标签: java

我试图在以下代码中删除这些符号之前的空格:

 != = < >

输出应为:

( 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

2 个答案:

答案 0 :(得分: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()的调用。

答案 1 :(得分:1)

根据JavaDocreplaceAll方法将常规exprression作为第一个参数,将字符串作为第二个参数。

在您的情况下,由于您事先知道要匹配的内容,因此您可以执行以下操作:s = s.replaceAll("\\s+([=<>]|(!=))", "$1");

这将替换所有空格,后跟=<>!=符号本身。 $1在这种情况下具有特殊含义,因为它引用了正则表达式捕获的第一个组。

由于您之后似乎也在使用白色空格,因此您也可以使用此:s = s.replaceAll("\\s+([=<>]|(!=))\\s+", "$1");