2013-07-27 5 views
5

एएनटीएलआर वी 4 में, हम इस तरह की स्ट्रिंग को दोबारा उद्धृत करते हैं, जिसमें डबल कोट्स वीबीए जैसे डबल कोट्स से बच निकले हैं?एएनटीएलआरवी 4: डबल कोट को कैसे पढ़ा जाए स्ट्रिंग में डबल कोट्स से बच निकला?

पाठ के लिए

:

"some string with ""john doe"" in it" 

लक्ष्य स्ट्रिंग पहचान करने के लिए होगा: some string with "john doe" in it

और यह यह एक दोहरे उद्धरण में डबल डबल कोट्स चालू करने के लिए फिर से लिखने के लिए संभव है? "" -> "?

उत्तर

9
इस तरह

:

STRING 
: '"' (~[\r\n"] | '""')* '"' 
; 

जहां ~[\r\n"] | '""' का अर्थ है:

~[\r\n"] # any char other than '\r', '\n' and double quotes 
|   # OR 
'""'  # two successive double quotes 

और यह यह एक दोहरे उद्धरण में डबल डबल कोट्स चालू करने के लिए फिर से लिखने के लिए संभव है?

कस्टम कोड एम्बेड किए बिना नहीं। जावा में ऐसा लगता है:

STRING 
: '"' (~[\r\n"] | '""')* '"' 
    { 
    String s = getText(); 
    s = s.substring(1, s.length() - 1); // strip the leading and trailing quotes 
    s = s.replace("\"\"", "\""); // replace all double quotes with single quotes 
    setText(s); 
    } 
; 
+0

एक आकर्षण की तरह काम करता है। साइड सवाल, क्या सिंगल डबल कोट्स में डबल डबल कोट्स को चालू करने के लिए इसे फिर से लिखना संभव है? "" -> "? धन्यवाद! – JayDee

+0

@JayDee मेरा संशोधित उत्तर देखें। –

+1

मेरे लिए एएनटीएलआर 4 का उपयोग करने के लिए निम्नलिखित नियम दोहरे उद्धृत और एकल उद्धृत तारों के साथ काम किया: STRING: '' '(~ [\ r \ n"] | '' '' ') *' '' '| '\' '(~ [\ r \ n \'] | '\' \ '') * '\' '; –

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