我试图在以下代码中删除这些符号之前的空格:
!= = < >
输出应为:
( 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 :(得分: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)
根据JavaDoc,replaceAll
方法将常规exprression作为第一个参数,将字符串作为第二个参数。
在您的情况下,由于您事先知道要匹配的内容,因此您可以执行以下操作:s = s.replaceAll("\\s+([=<>]|(!=))", "$1");
。
这将替换所有空格,后跟=
,<
,>
或!=
符号本身。 $1
在这种情况下具有特殊含义,因为它引用了正则表达式捕获的第一个组。
由于您之后似乎也在使用白色空格,因此您也可以使用此:s = s.replaceAll("\\s+([=<>]|(!=))\\s+", "$1");
。