2013-05-30 10 views
5

が、私は、コードを必要とする私のアプリではどのようなものです:問題はstring1string2は特殊記号を含めることができるということですようjava.util.regex.Pattern.quoteためのGWTの交換(String型の引数)

string1.replaceAll(string2, myConstatntString)

'('のように。

私はjava.util.regex.Pattern.quote(String arg)を使用してstring2を引用したい:

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

しかしjava.util.regex.Patternは、GWTのクライアント側では使用できません。 GWTにはPattern.quoteの代替品がありますか?

答えて

3

JavaScriptは独自の方法がないので、私はそこにはないと信じています。あなたが行うことができるのは、String.replaceAll()の代わりにString.replace()を使用することです。ただし、正規表現はまったく必要ありません。そうした場合は、独自のメソッドを記述する必要があります。

これはJavaScriptで行われている方法である:(Javaで実際の実装http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/6-b14/java/util/regex/Pattern.java

1.5+:Is there a RegExp.escape function in Javascript?

そして、これは、それが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(); 
} 

から)

+0

+1私はどちらかとは思わない。あなたはJSメソッドを呼び出すGWTでネイティブメソッドを書くことができます。 – Bohemian

関連する問題