2013-05-30 6 views
5

W moim app potrzebuję kod jak:Co jest zastąpienie GWT dla java.util.regex.Pattern.quote (Arg String)

string1.replaceAll(string2, myConstatntString)

Problem jest to, że string1 i string2 może zawierać symbole specjalne jak '('.

pragnę zacytować string2 użyciu java.util.regex.Pattern.quote(String arg):

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

Ale java.util.regex.Pattern nie jest dostępna w stronie klienta GWT. Czy GWT ma jakiekolwiek zamienniki dla Pattern.quote?

Odpowiedz

3

Uważam, że nie ma, ponieważ JavaScript nie ma własnej metody. Jedyne co możesz zrobić, to użyć String.replace() zamiast String.replaceAll(), ponieważ nie potrzebujesz w ogóle regexp. Jeśli to zrobisz, będziesz musiał napisać własną metodę.

To jak to jest zrobione w JavaScript: Is there a RegExp.escape function in Javascript?

I tak to się odbywa w Javie:

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

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

(rzeczywistej implementacji Java 1.5+)

+0

+1 Nie sądzę, że jest jedna. Możesz napisać natywną metodę w GWT wywołania metodą JS. – Bohemian

Powiązane problemy