在我的应用中,我需要代码:
string1.replaceAll(string2, myConstatntString)
问题是string1
和string2
可以包含'('
等特殊符号。
我希望使用string2
引用java.util.regex.Pattern.quote(String arg)
:
string1.replaceAll(Pattern.quote(string2), myConstatntString);
但是java.util.regex.Pattern
在GWT客户端不可用。 GWT是否有Pattern.quote
的任何替换?
答案 0 :(得分:3)
我相信没有,因为JavaScript没有自己的方法。鉴于您根本不需要正则表达式,您可以使用String.replace()
而不是String.replaceAll()
。如果你这样做,你将不得不编写自己的方法。
这是在JavaScript中完成的:Is there a RegExp.escape function in Javascript?
这就是在Java中完成的方式:
public static String quote(String s) {
int slashEIndex = s.indexOf("\\E");
if (slashEIndex == -1)
return "\\Q" + s + "\\E";
StringBuilder sb = new StringBuilder(s.length() * 2);
sb.append("\\Q");
slashEIndex = 0;
int current = 0;
while ((slashEIndex = s.indexOf("\\E", current)) != -1) {
sb.append(s.substring(current, slashEIndex));
current = slashEIndex + 2;
sb.append("\\E\\\\E\\Q");
}
sb.append(s.substring(current, s.length()));
sb.append("\\E");
return sb.toString();
}
(Java 1.5 +中的实际实现)