2013-05-30 4 views
5

मेरे ऐप में मैं की तरह कोड की जरूरत है:क्या java.util.regex.Pattern.quote (स्ट्रिंग आर्ग) के लिए GWT प्रतिस्थापन है

string1.replaceAll(string2, myConstatntString)

समस्या है कि string1 और string2 विशेष प्रतीक होने जा सकता है '(' की तरह।

मैं java.util.regex.Pattern.quote(String arg) का उपयोग कर string2 उद्धृत करने के लिए चाहते हैं:

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

लेकिन java.util.regex.Pattern GWT ग्राहक के पक्ष में उपलब्ध नहीं है। क्या जीडब्ल्यूटी के पास Pattern.quote के लिए कोई प्रतिस्थापन है?

उत्तर

3

मुझे विश्वास है कि ऐसा नहीं है, क्योंकि जावास्क्रिप्ट की अपनी विधि नहीं है। String.replaceAll() के बजाय String.replace() का उपयोग करने के लिए आप क्या कर सकते हैं, यह देखते हुए कि आपको regexp की आवश्यकता नहीं है। यदि आप करते हैं, तो आपको अपनी खुद की विधि लिखनी होगी।

यह है कि यह कैसे जावास्क्रिप्ट में किया जाता है: Is there a RegExp.escape function in Javascript?

और यह कि यह कैसे जावा में किया जाता है:

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

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

(जावा में वास्तविक क्रियान्वयन 1.5+)

+0

+1 मुझे नहीं लगता कि कोई भी है। आप जीडब्ल्यूटी में एक मूल विधि लिख सकते हैं जो जेएस विधि को कॉल करता है। – Bohemian

संबंधित मुद्दे