2013-05-30 3 views
5

Nella mia app ho bisogno del codice come:Qual è la sostituzione GWT per java.util.regex.Pattern.quote (String arg)

string1.replaceAll(string2, myConstatntString)

Il problema è che string1 e string2 possono contenere simboli speciali come '('.

desidero citare string2 utilizzando java.util.regex.Pattern.quote(String arg):

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

Ma java.util.regex.Pattern non è disponibile in lato client GWT. GWT ha sostituzioni per Pattern.quote?

risposta

3

Credo non ci sia, perché JavaScript non ha un proprio metodo. Quello che puoi fare è usare String.replace() invece di String.replaceAll(), dato che non hai affatto bisogno di regexp. Se lo fai, dovrai scrivere il tuo metodo.

Questo è come si è fatto in JavaScript: Is there a RegExp.escape function in Javascript?

Ed ecco come si è fatto in 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(); 
} 

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

(l'effettiva implementazione in Java 1.5 +)

+0

+1 non penso che ce n'è uno neanche. È possibile scrivere un metodo nativo in GWT, le chiamate al metodo JS. – Bohemian