2010-03-16 11 views
9

यह this question about C# का जावा एनालॉग है।आप एक स्ट्रिंग को जावा स्ट्रिंग अक्षर में कैसे परिवर्तित करेंगे?

मान लीजिए कि मेरे पास String ऑब्जेक्ट है जो मैं कोड में प्रतिनिधित्व करना चाहता हूं और मैं एक स्ट्रिंग अक्षर का उत्पादन करना चाहता हूं जो एक ही चीज़ पर नक्शा बनाता है।

उदाहरण

hello, "world" 
goodbye 

hello, \"world\"\ngoodbye 

मैं बस के बारे में एक राज्य मशीन है कि चरित्र से स्ट्रिंग चरित्र ग्रहण करता है और उचित निकल जाता है लिखने के लिए था हो जाता है, लेकिन फिर अगर वहाँ एक बेहतर तरीका था मैंने सोचा , या एक पुस्तकालय जो ऐसा करने के लिए एक समारोह प्रदान करता है।

उत्तर

6

आप बाहरी कोड जोड़ सकते हैं, अपाचे के कॉमन्स लैंग EscapeStringUtils.escapeJava() जो मुझे लगता है कि वास्तव में आप क्या चाहते हैं करता है।

+1

लिंक अब टूटा हुआ है :( – epeleg

+0

@epeleg: धन्यवाद, तय किया गया। – unwind

+0

एस्केपस्ट्रिंगUtils.escapeJava() स्ट्रिंग गैर-शून्य होने पर बाहरी उद्धरण नहीं करता है। मुझे इसे लपेटने की आवश्यकता होगी: (s == null) नल: "\" "+ स्ट्रिंगएस्केप यूटिलसस्केप जावा (एस) +" \ ""; –

2

मेरे अनुभवहीन राज्य मशीन कार्यान्वयन इस तरह दिखता है:

public String javaStringLiteral(String str) 
{ 
    StringBuilder sb = new StringBuilder("\""); 
    for (int i=0; i<str.length(); i++) 
    { 
     char c = str.charAt(i); 
     if (c == '\n') 
     { 
      sb.append("\\n"); 
     } 
     else if (c == '\r') 
     { 
      sb.append("\\r"); 
     } 
     else if (c == '"') 
     { 
      sb.append("\\\""); 
     } 
     else if (c == '\\') 
     { 
      sb.append("\\\\"); 
     } 
     else if (c < 0x20) 
     { 
      sb.append(String.format("\\%03o", (int)c)); 
     } 
     else if (c >= 0x80) 
     { 
      sb.append(String.format("\\u%04x", (int)c)); 
     } 
     else 
     {    
      sb.append(c); 
     } 
    } 
    sb.append("\""); 
    return sb.toString(); 
} 
+0

आप टैब वर्ण भूल गए हैं। – fernacolo

+0

और फॉर्मफीड 'एफ' और बैकस्पेस 'बी'। –

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

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