2013-05-30 21 views
5

In meiner app ist brauche ich den Code wie:Was die GWT Ersatz für java.util.regex.Pattern.quote (String arg)

string1.replaceAll(string2, myConstatntString)

Problem ist, dass string1 und string2 Sonderzeichen enthalten wie '('.

Ich wünsche string2 mit java.util.regex.Pattern.quote(String arg) zitieren:

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

Aber java.util.regex.Pattern in GWT Client-Seite nicht zur Verfügung steht. Hat GWT Ersatz für Pattern.quote?

Antwort

3

Ich glaube, es gibt nicht, weil JavaScript keine eigene Methode hat. Was Sie tun können, ist String.replace() anstelle von String.replaceAll() zu verwenden, vorausgesetzt, dass Sie regexp überhaupt nicht benötigen. Wenn Sie dies tun, müssen Sie Ihre eigene Methode schreiben.

Dies ist, wie es in JavaScript geschehen ist: Is there a RegExp.escape function in Javascript?

Und das ist, wie es in Java getan wird:

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

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

(die tatsächlichen Umsetzung in Java 1.5+)

+0

+1 ich glaube nicht, dass es auch einen gibt. Sie könnten eine native Methode in GWT schreiben, die die JS-Methode aufruft. – Bohemian