2013-03-28 3 views
8

से पुनर्प्राप्त होने पर नई लाइन के रूप में "\ n" का इलाज नहीं कर रहा है, मुझे एक अजीब समस्या का सामना करना पड़ रहा है।
मैं जो कर रहा हूं वह है कि मैं डीबी (ऑरैकल 11 जी) में varchar2 और कुछ मूल्यों को जावा में लाने और प्राप्त डेटा के साथ काम करने के रूप में कुछ मूल्य संग्रहीत कर रहा हूं।
अब मेरे पास \ n डीबी में एक मान के रूप में है और इसे rs.getString() का उपयोग कर जावा में प्राप्त कर रहा है। मुझे उचित मूल्य \n मिल रहा है।जावा डेटाबेस कॉलम

Time: 08 AM - 11 AM 
Duration : 36 minutes 

अब कोड में मैं पारित करेंगे:

String newLine=rs.getString("column_value"); 

अब मैं एक HTML पृष्ठ को पार्स करने और पेज एक string.Suppose के रूप में पूरे पृष्ठ मिल 3 लाइनों प्रत्येक नीचे की तरह ssome जानकारियां depiciting है "अवधि:" एक विधि के लिए और वह मुझे "36 मिनट" वापस कर देगा। "अवधि:" और जब तक "\ n" पढ़ें encountered.Code ठीक काम करता है अगर मैं

String newLine= "\n"; 

के रूप में न्यू लाइन की घोषणा है लेकिन अगर मैं इसे डीबी से प्राप्त
क्या तर्क मैं का उपयोग मैं के सूचकांक मिलता है यह काम नहीं करता। मुझे पता है कि मुझे इसे डीबी में स्टोर करने की आवश्यकता नहीं है लेकिन मैं इन वस्तुओं को हार्डकोड नहीं करना चाहता हूं। तो मुझे इसे केवल डीबी में स्टोर करना है। क्या कोई इस में मेरी मदद कर सकता है ???

+0

क्या आप इसका मतलब समझ सकते हैं कि "अब जब मैं कई लाइनें प्राप्त करता हूं और न्यूलाइन जावा का उपयोग करके इसे तोड़ना चाहता हूं तो नई लाइन के रूप में व्याख्या नहीं कर रहा है।" – codeMan

+0

क्या आप विंडोज़ पर हैं? क्या \ r \ n' काम करता है? – Keppil

+0

'\ n'' \ n' है, इस पर ध्यान दिए बिना कि आप इसे कहां से प्राप्त करते हैं। यदि आपने जांच की है कि चर में मान सही है, तो समस्या अन्य जगह पर है क्योंकि जावा जादुई रूप से नहीं जानता है कि चर का मान कहां से आता है। – SJuan76

उत्तर

10

हैं जब आप प्रिंट newLine आप उत्पादन में \n मिलता है, आप स्ट्रिंग आप डीबी से प्राप्त unescape करना पड़ सकता है।

http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringEscapeUtils.html#unescapeJava(java.io.Writer, java.lang.String)

तो तुम होता बस कॉल करने के लिए

String newLine = StringEscapeUtils.unescapeJava(rs.getString("column_value")); 

आशा इस मदद करता है

+0

ठीक है कोशिश करेंगे और आपको बताएंगे। – Anubhab

+0

मैंने StringEscapeUtils के बारे में पहले कभी नहीं सुना। महान समाधान ... धन्यवाद :) –

2

कोशिश इस

String newline = System.getProperty("line.separator"); 
boolean hasNewline = word.contains(newline); 
+3

कोई अच्छा विचार नहीं है। 'Line.separator' प्रॉपर्टी * क्लाइंट के * सिस्टम वातावरण द्वारा निर्धारित की जाती है और विभिन्न प्रणालियों पर अलग हो सकती है, जबकि डीबी में केवल एक ही प्रतिनिधित्व संग्रहीत किया जा सकता है। इसलिए, यह कुछ ग्राहकों पर काम कर सकता है और डीबी से बहुत ही डेटा दिए गए अन्य लोगों पर असफल हो सकता है। – JimmyB

2

समस्या यह है कि डेटाबेस एक भागने जोड़ रहा है है: अपाचे कॉमन्स लैंग कि के लिए एक विधि है आपकी स्ट्रिंग के लिए चरित्र, ताकि आप \ n के बजाय \\ n के साथ समाप्त हो जाएं। इसे ठीक करने के लिए आप \\ n को \ n के साथ बदल सकते हैं।

String db_string = new String("This is a string from the db \\n This should be a new line, but is not."); 
db_string = db_string.replace("\\n", "\n"); 

आप इस प्रिंट तो आपको मिलेगा:
इस डाटाबेस
से एक स्ट्रिंग यह एक नई लाइन होना चाहिए है, लेकिन नहीं है। // ठीक है अब यह है ..

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