5

在我的应用程序中,我需要如下代码:

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吗?

4

1 回答 1

3

我相信没有,因为 JavaScript 没有自己的方法。鉴于您根本不需要正则表达式,您可以做的是使用String.replace()而不是。String.replaceAll()如果这样做,您将不得不编写自己的方法。

这就是它在 JavaScript 中的完成方式: JavaScript中有 RegExp.escape 函数吗?

这就是它在 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+ 中的实际实现)

于 2013-05-30T04:25:35.077 回答