2013-05-30 32 views
5

Trong ứng dụng của tôi, tôi cần mã như:là gì thay thế GWT cho java.util.regex.Pattern.quote (String arg)

string1.replaceAll(string2, myConstatntString)

Vấn đề là string1string2 có thể chứa các ký hiệu đặc biệt như '('.

tôi muốn trích dẫn string2 sử dụng java.util.regex.Pattern.quote(String arg):

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

Nhưng java.util.regex.Pattern không có sẵn trong phía khách hàng GWT. GWT có bất kỳ sự thay thế nào cho Pattern.quote không?

Trả lời

3

Tôi tin rằng không có, vì JavaScript không có phương pháp riêng. Những gì bạn có thể làm là sử dụng String.replace() thay vì String.replaceAll(), với điều kiện bạn không cần regexp chút nào. Nếu bạn làm thế, bạn sẽ phải viết phương pháp của riêng bạn.

Đây là cách nó được thực hiện trong JavaScript: Is there a RegExp.escape function in Javascript?

Và đây là cách nó được thực hiện trong 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(); 
} 

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

(thực hiện thực tế trong Java 1.5 +)

+0

+1 tôi cũng không nghĩ là có. Bạn có thể viết một phương thức gốc trong GWT để gọi phương thức JS. – Bohemian

Các vấn đề liên quan