什么是java.util.regex.Pattern.quote(String arg)的GWT替换

时间:2013-05-30 04:05:45

标签: java regex gwt

在我的应用中,我需要代码:

string1.replaceAll(string2, myConstatntString)

问题是string1string2可以包含'('等特殊符号。

我希望使用string2引用java.util.regex.Pattern.quote(String arg)

string1.replaceAll(Pattern.quote(string2), myConstatntString);

但是java.util.regex.Pattern在GWT客户端不可用。 GWT是否有Pattern.quote的任何替换?

1 个答案:

答案 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();
}

来自:http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/regex/Pattern.java

(Java 1.5 +中的实际实现)