2013-05-30 34 views
5

ben gibi kodu gerekir:benim app

string1.replaceAll(string2, myConstatntString)

Sorun string1 ve string2 özel sembol içerebilir olmasıdır '(' gibi.

Ben java.util.regex.Pattern.quote(String arg) kullanarak string2 alıntı yapmak istiyorum:

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

Ama java.util.regex.Pattern GWT istemci tarafında mevcut değildir. GWT'nin Pattern.quote için herhangi bir yedeği var mı?

cevap

3

JavaScript kendi yöntemi olmadığı için, orada olmadığına inanıyorum. Yapabilecekleriniz, regexp'e ihtiyacınız olmaması koşuluyla String.replaceAll() yerine String.replace() kullanmaktır. Eğer yaparsanız, kendi yönteminizi yazmanız gerekecektir.

Bu JavaScript nasıl yapılır: Is there a RegExp.escape function in Javascript?

Ve bu Java nasıl yapılır:

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

Gönderen: Java http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/regex/Pattern.java

(gerçek uygulama 1.5+

+0

+1 Bende bir tane olduğunu düşünmüyorum. GWT'de doğal yöntem kullanarak JS yöntemini çağırırsınız. – Bohemian

İlgili konular