2009-08-25 6 views
8

मैं एक अंतर्निहित जावा फ़ंक्शंस की तलाश में हूं जो उदाहरण के लिए "\\n" को "\n" में परिवर्तित कर सकता है।क्या कोई जावा फ़ंक्शन है जो वर्णों से बच निकला है?

कुछ इस तरह:

assert parseFunc("\\n") = "\n" 

या मैं मैन्युअल रूप से खोज एवं प्रतिस्थापन के लिए सभी भाग निकले पात्रों क्या ज़रूरत है?

+0

DO तुम्हारा मतलब आप बदलना चाहते \\ n एक न्यूलाइन चरित्र के साथ? – AnthonyWJones

उत्तर

9

आप Apache Commons Lang सेका उपयोग कर सकते हैं। यह यूनिकोड वर्णों सहित सभी भागने के दृश्यों के लिए काम करता है (यानी \u1234)।

https://commons.apache.org/lang/apidocs/org/apache/commons/lang3/StringEscapeUtils.html#unescapeJava-java.lang.String-

+1

यही वह है जिसे मैं ढूंढ रहा था! यूनिकोड के साथ परेशानी थी php के json_encode से अक्षर से बच निकला – Tschallacka

1

बस स्ट्रिंग्स को प्रतिस्थापित करें सभी विधि का उपयोग करें।

result = myString.replaceAll("\\n", "\n"); 

हालांकि यदि आप सभी भागने के दृश्यों से मेल खाते हैं तो आप एक मैचर का उपयोग कर सकते हैं। Matcher का उपयोग करने के एक बहुत ही बुनियादी उदाहरण के लिए http://www.regular-expressions.info/java.html देखें।

Pattern p = Pattern.compile("\\(.)"); 
Matcher m = p.matcher("This is tab \\t and \\n this is on a new line"); 
StringBuffer sb = new StringBuffer(); 
while (m.find()) { 
    String s = m.group(1); 
    if (s == "n") {s = "\n"; } 
    else if (s == "t") {s = "\t"; } 
    m.appendReplacement(sb, s); 
} 
m.appendTail(sb); 
System.out.println(sb.toString()); 

तुम बस रों अधिक परिष्कृत संख्या और पलायन आप हैंडल करना चाहते हैं के प्रकार पर निर्भर करने के लिए काम करने की जरूरत है। (चेतावनी इस हवा कोड है, मैं जावा डेवलपर नहीं कर रहा हूँ)

+0

यदि मैं प्रतिस्थापन करता हूं तो क्या यह एक प्रदर्शन नाली नहीं होगा, हर बचने योग्य चरित्र के लिए, यानी 8 बार? (http://java.sun.com/docs/books/tutorial/java/data/characters.html) –

+0

क्षमा करें मैं बस आपके साधारण मामले में एक एन्वेयर दिखा रहा था (यह एक घुटने-झटका है कि हम में से कई लोग ऐसा करते हैं वास्तव में आपके प्रश्न का उत्तर नहीं देते हैं)। Thats मैं आपको Matcher क्लास में क्यों इंगित करता हूं, जो एक स्ट्रिंगबफर के साथ संयोजन में आप एक पास में परिणाम स्ट्रिंग बना सकते हैं। – AnthonyWJones

3

एंथोनी 99% सही है - के बाद से बैकस्लैश भी नियमित अभिव्यक्ति में एक आरक्षित वर्ण है, यह एक दूसरी बार भाग निकले जाने की आवश्यकता है:

result = myString.replaceAll("\\\\n", "\n"); 
0

आप

String escapedText="This is tab \\t and \\rthis is on a new line"; 
    Properties prop = new Properties();  
    prop.load(new StringReader("x=" + escapedText + "\n")); 
    String decoded = prop.getProperty("x"); 
    System.out.println(decoded); 

यह सब संभव पात्रों को संभालने के लिए सभी संभव बच गए वर्ण गुण व्यवहार करने के लिए आप इस प्रतिनिधि कर सकते हैं सूचीबद्ध नहीं करना चाहते हैं

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