स्ट्रिंग के अंदर कई रिक्त स्थान और नई लाइनें निकालें


104

मान लीजिए कि हमारे पास इस तरह से स्ट्रिंग है:

Hello, my\n       name is Michael.

मैं उस नई लाइन को कैसे निकाल सकता हूं और इसे प्राप्त करने के लिए स्ट्रिंग के अंदर एक के बाद उन रिक्त स्थान को पट्टी कर सकता हूं?

Hello, my name is Michael.

जवाबों:


188

रेल squishविधि देखें:

http://apidock.com/rails/String/squish


6
सबसे सरल और सबसे सुंदर समाधान। धन्यवाद। लेकिन एक बात है, इस पद्धति को रेल में परिभाषित किया गया है, इसलिए यह केवल रेल अनुप्रयोगों में काम करेगा, सौभाग्य से मेरा मामला है।
क्रिकी

4
जैसा कि क्रीकी ने स्पष्ट रूप से एक बालक कहा, यह एक रूबी विधि है, रूबी विधि नहीं।

17
एक गैर-रेल संदर्भ के लिए, वह उपयोग करें some_string.strip.gsub(/\s+/, " ")जो वास्तव में स्क्विश करता है।
रैपक

1
धन्यवाद! के बारे में पता नहीं थाsquish
फ्रेंकोइस

38

निचोड़ में निर्मित रूबियों का वर्णन करने के लिए :

string.gsub("\n", ' ').squeeze(' ')

3
बस जागरूक रहें: निचोड़ सभी वर्णों को संपीड़ित करेगा जो कई वर्णों के रन में आते हैं। तो "अपने आवेदन की प्रतिलिपि निचोड़" .squeeze => "मेरी आवेदन की प्रतिलिपि Squeze"
charliepark

8
लेकिन squeeze(' ')सिर्फ रिक्त स्थान को निचोड़ता है। "Squeeze my application's copy".squeeze(' ') => "Squeeze my application's copy"
स्टेन्सलैग २ ste

22

सबसे सरल तरीका शायद होगा

s = "Hello, my\n       name is Michael."
s.split.join(' ') #=> "Hello, my name is Michael."

8

इसे इस्तेमाल करे:

s = "Hello, my\n       name is Michael."
s.gsub(/\n\s+/, " ")

यह वास्तव में सबसे अच्छा "सादा रूबी" उत्तर है, और एक बहुस्तरीय स्ट्रिंग से प्रमुख स्थानों को अलग करने के लिए ठीक से काम करता है।
कोएन।

5
my_string = "Hello, my\n       name is Michael."
my_string = my_string.gsub( /\s+/, " " )

वह \nआदर्श रूप से इसे दूर करना भी पसंद करेंगे (मुझे लगता है) इसे कुछ के मामले में एक स्थान के साथ प्रतिस्थापित किया जाना चाहिए जैसे"Hello,\nMy name is Michael"
अली

4

यह रेगेक्स 1 या अधिक श्वेत स्थानों को 1 सफ़ेद स्थान के साथ \sप्रतिस्थापित करेगा , ps सभी सफ़ेद अंतरिक्ष वर्णों को प्रतिस्थापित करेगा जिसमें शामिल हैं \s\t\r\n\f:

a_string.gsub!(/\s+/, ' ')

इसी तरह केवल गाड़ी वापसी के लिए

str.gsub!(/\n/, " ")

पहले सभी \nको सफेद स्थान से बदलें , फिर हटाए गए कई सफेद स्थान regex का उपयोग करें।


धन्यवाद! यह मेरे उद्देश्य से कई गुना रिक्तियाँ निकालने के लिए काम करता है लेकिन शब्दों के बीच एकल स्थान बनाए रखता है।
ध्वनिक_नोरथ



हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.