जवाबों:
आपको अपने gsub में उपयोग करने की आवश्यकता "\n"नहीं '\n'है। अलग-अलग भाव चिह्न अलग-अलग व्यवहार करते हैं।
दोहरे उद्धरण "वर्ण विस्तार और अभिव्यक्ति प्रक्षेप अर्थात् अनुमति देते हैं। वे आपको बच गए नियंत्रण वर्णों का उपयोग करने देते हैं जैसे \nकि उनके असली मूल्य का प्रतिनिधित्व करते हैं, इस मामले में, नई रेखा, और इसके उपयोग की अनुमति दें #{expression}जिससे आप चर और अच्छी तरह से, बहुत ही रूबी अभिव्यक्ति को पाठ में पसंद कर सकें।
दूसरी ओर, एकल उद्धरण 'शाब्दिक रूप से स्ट्रिंग का इलाज करते हैं, इसलिए कोई विस्तार, प्रतिस्थापन, प्रक्षेप या आपके पास क्या नहीं है।
इस विशेष मामले में, नईलाइन्स को हटाने के लिए .deleteया तो .trस्ट्रिंग विधि का उपयोग करना बेहतर है ।
trहै कि इस कार्य के लिए एक बेहतर विकल्प है, लेकिन जैसा कि मैं कहता हूं, मैंने जवाब देने पर सिंगल, डबल कोट्स में अंतर को इंगित करना बेहतर समझा।
जब आप एक स्ट्रिंग निकालना चाहते हैं, तो इसे बदलने के बजाय आप String#delete(या इसके उत्परिवर्ती समकक्ष String#delete!) का उपयोग कर सकते हैं , उदाहरण के लिए:
x = "foo\nfoo"
x.delete!("\n")
x अब "फूफो" के बराबर है
इस विशिष्ट मामले String#deleteकी तुलना में अधिक पठनीय है gsubक्योंकि आप वास्तव में कुछ के साथ स्ट्रिंग की जगह नहीं ले रहे हैं।
deleteविनाशकारी नहीं है जैसा कि यहां बताया गया है। यह एक नया स्ट्रिंग लौटाता है।
यदि आप चाहते हैं या आपके स्ट्रिंग से सभी प्रमुख और अनुगामी व्हाट्सएप को हटाने का मन नहीं है, तो आप stripविधि का उपयोग कर सकते हैं ।
" hello ".strip #=> "hello"
"\tgoodbye\r\n".strip #=> "goodbye"
संपादित करें इस प्रश्न के लिए मूल शीर्षक अलग था। मूल प्रश्न के लिए मेरा उत्तर है।
stripकेवल प्रमुख और अनुगामी व्हाट्सएप
इसके लिए आपको regex की आवश्यकता नहीं है। ट्रे का उपयोग करें:
"some text\nandsomemore".tr("\n","")
replaceबस स्ट्रिंग को एक नए रूप में बदलता है, जैसे चर असाइनमेंट; जबकि trएक चरित्र-दर-चरित्र वैश्विक खोज और प्रतिस्थापित है।
रूबी से उपयोग chompया stripकार्य:
"abcd\n".chomp => "abcd"
"abcd\n".strip => "abcd"
stripकेवल प्रमुख और अनुगामी व्हाट्सएप