2012-08-13 20 views
7

मैं कुछ जेडीके कोड देख रहा था। मुझे इन पात्रों को मिला। क्या कोई मुझे समझा सकता है कि इसका क्या अर्थ है।जावा में इन विशेष वर्णों का क्या अर्थ है?

public static String quote(String s) { 
    int slashEIndex = s.indexOf("\\E");  // What does this mean. Is this a special char in java. if so what does this do. 
    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(); 
} 

ऊपर कोड उदाहरण मैं क्या विधि में के रूप में हो रहा है यह पता लगाने में सक्षम था से \ की घटनाओं को पाता है और उन्हें धर्मान्तरित \ ई और \ क्यू करने के लिए। क्या कोई समझा सकता है कि ऐसा क्यों है।

इस विधि के बारे में अधिक संदर्भ के लिए, मैं JDK 1.6

+0

इस कोड को प्रकट होता है करने के लिए [जावा स्रोतों से सीधे उठा लिया] जा (http://www.docjar.com/html/api/java:

अधिक जानकारी के लिए इस लिंक को देख /util/regex/Pattern.java.html) ('पैटर्न.जावा', रेखाएं 1276..1293)। – dasblinkenlight

+0

हां यह jdk स्रोतों Pattern.java से है – JourneyMan

उत्तर

2

खैर, \Q और \E जावा regular expressions में एक विशेष अर्थ नहीं होता से विधि Pattern.quote() में देख रहा था ...

अधिकांश की यह विधि सिर्फ उद्धरण मार्कर \Q और \E उद्धरण के कठिन किनारे के मामले पर काम कर रही है।

4

जावा रेगेक्स इंजन \Q और \E के बीच सभी मेटा-वर्णों की विशेष व्याख्या को अवरुद्ध करता है। '[', 'n', 'a', 'm', 'e', और ']' - उदाहरण के लिए, [name] जबकि \Q[name]\E छह से मेल खाता है, एक एक वर्ण ('n', 'a', 'm', या 'e') से मेल खाता है। अधिक जानकारी के लिए regex tutorial के विशेष वर्ण अनुभाग देखें।

विधि एक स्ट्रिंग से नियमित अभिव्यक्ति करता है जो संभावित रूप से बाहरी रूप से प्रदान किया जाता है (उदाहरण के लिए उपयोगकर्ता द्वारा दर्ज किया गया)। चूंकि स्ट्रिंग में मेटा-वर्ण हो सकते हैं, इसलिए विधि \Q और \E में संपूर्ण स्ट्रिंग को संलग्न करती है। स्ट्रिंग पहले से ही एक \E शामिल है, तो विधि बोली, \E के एक मैच, और प्रत्येक \E कि यह पाता है के लिए एक नया बोली की शुरुआत के अंत सम्मिलित करता है ..

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