2009-10-23 16 views
9

पर सामग्री चिपकाते समय स्ट्रिंग से कैरिज रिटर्न को कैसे निकालें I जावा कोड द्वारा एक्सेल में जेनरेट की गई मेरी सामग्री (या टेक्स्ट) चिपकाते समय मुझे कोई समस्या है। समस्या यह है कि मेरा जावा कोड एकाधिक लाइनों के साथ एक स्ट्रिंग उत्पन्न करता है, यानी लाइन ब्रेक (\n) के साथ शामिल है। जब मैं इस सामग्री की प्रतिलिपि बनाने और इसे एक्सेल फ़ाइल में पेस्ट करने का प्रयास करता हूं, तो मुझे स्क्वायर बॉक्स प्रतीक के साथ एक मल्टीलाइन टेक्स्ट मिल रहा है। मुझे पता चला कि विंडोज लाइन ब्रेक के लिए \r\n का उपयोग करता है और न केवल \n। मैंने को \r\n के साथ प्रतिस्थापित करने और जेनरेट किए गए टेक्स्ट को पेस्ट करने का प्रयास किया, लेकिन मुझे अपनी एक्सेल फ़ाइल में एक ही स्क्वायर बॉक्स मिल रहे हैं।Excel फ़ाइल

 String myString = "a1\nb1"; 
     String tmpString =myString.replace("\n","\r\n"); 
     System.out.println("Original = " +"\""+myString+"\""); 
     System.out.println("Result = " +"\""+tmpString+"\""); 

मैं "" का इस्तेमाल किया है पाठ रैप करने के लिए: यहाँ मेरी नमूना कोड है। जब मैंने Excel में tmpstring पेस्ट करने का प्रयास किया, तो मुझे स्क्वायर बॉक्स मिला। मैं अपने सेल में एकाधिक लाइनों के साथ बॉक्स को कैसे हटा सकता हूं?

+0

"एबीसी \ N12" की तरह कुछ के लिए, आप अंत में या प्रत्येक पंक्ति के बाद एक बॉक्स मिलता है? – A9S6

उत्तर

41

क्या आप कैरिज रिटर्न/न्यूलाइन चाहते हैं, या नहीं? आपका शीर्षक कहता है कि आप नहीं करते हैं, स्ट्रिंग की एक नई लाइन होने पर आपका कोड स्पष्ट रूप से कैरिज रिटर्न जोड़ रहा है।

public static void main(String[] argv) 
throws Exception 
{ 
    String s1 = "this\r\nis a test"; 
    String s2 = s1.replaceAll("[\n\r]", ""); 
    System.out.println(s2); 
} 

यह उदाहरण वर्णों के किसी भी घटना पाता है, और उन्हें हटाता है: तुम दोनों से छुटकारा पाने चाहते हैं, String.replaceAll() है, जो एक regex लेता है का उपयोग करें। आप शायद पात्रों के अनुक्रम की तलाश करना चाहते हैं और एक स्थान के साथ प्रतिस्थापित करना चाहते हैं, लेकिन मैं इसे आपके पास छोड़ दूंगा: java.util.regex.Pattern के लिए दस्तावेज़ देखें।

और मुझे संदेह है कि "बॉक्स" कुछ अन्य चरित्र है, न कि वापसी या नई लाइन।

+0

आपके उत्तर के लिए धन्यवाद। जब कोशिश करें आपके द्वारा पोस्ट किया गया कोड, यह मेरे टेक्स्ट में बहु लाइनों को भी हटा देता है जब मैं इसे एक्सेल में पेस्ट करता हूं जो मैं नहीं करना चाहता हूं। और बॉक्स एक एएससीआई मान 10 देता है जब मैं इसे एक चरित्र – chaithu

+1

+1 के रूप में देखता हूं - एक पुरानी पोस्ट आप लेकिन मेरे लिए एक उपयोगी समाधान :) धन्यवाद! –

+0

लाइन में '[\ r \ n] 'होना चाहिए: ' स्ट्रिंग s2 = s1।replaceAll ("[\ n \ r]", ""); ' –

0

आप सामान्य रूप से कॉपी और पेस्ट क्यों नहीं करते हैं, फिर खोज करें और Excel पर प्रतिस्थापित करें?

+0

मुझे क्लिपबोर्ड पर एक टेक्स्ट प्रोग्रामेटिकल कॉपी करना है और फिर इसे एक्सेल में पेस्ट करना है। यहां मैंने केवल एक नमूना कोड का उल्लेख किया है। मुझे – chaithu

0

अगर यह किसी भी मदद है, मैं कोड की इस पंक्ति भाग गया (सी #)

Clipboard.SetText("1\n2\r\n3"); 

और एक्सेल और 3 कोशिकाओं में तो Ctrl-V A1 से भर गया 1 मिला, ए 2 2 मिला है और ए 3 3 मिल गया इसका मतलब है कि एक्सेल द्वारा अपेक्षित के रूप में \ n और \ r \ n को संभाला जाता है। जावा स्ट्रिंग्स युक्त \ n और \ r \ n भी काम करना चाहिए। यह मुझे एक्सेल सेल सेटिंग्स के साथ कुछ विश्वास करने के लिए प्रेरित करता है। जांचें कि कक्ष को टेक्स्ट के रूप में स्वरूपित किया गया है या नहीं।

इसके अलावा, कोई विचार नहीं, क्षमा करें।

+0

पेस्ट करने पर मुझे उन टेक्स्ट बॉक्स नहीं मिलना चाहिए, आपके उत्तर के लिए धन्यवाद – chaithu

0
class Test { 
    public static void main(String args[]) 
    System.out.print("Hello\rHi"); 
} 

\ r कर्सर के कारण वर्तमान पंक्ति की शुरुआत करने के लिए ले जाता है, तो "वह" की नमस्ते द्वारा "हाय" बदल दिया है।

0

इस प्रयास करें =)

String s1 = "this\r\nis a test"; 
String s2 = s1.replaceAll("(\\r|\\n)", ""); 
System.out.println(s2); 
संबंधित मुद्दे