2011-09-07 17 views
8

से खाली लाइनों को हटाएं मैं स्ट्रिंग से खाली लाइनों को कैसे हटा सकता हूं? मैंने कुछ_स्ट्रिंग = some_string.gsub (/^$ /, "") की कोशिश की है;रूबी स्ट्रिंग

और बहुत कुछ, लेकिन कुछ भी काम नहीं करता है।

+0

संभव डुप्लिकेट [रूबी: नई रिक्त लाइनों ट्रिम] (http://stackoverflow.com/questions/1040390/ruby-trim-new-blank-lines) – bragboy

+2

यह एक नकली नहीं है। वह शीर्षक * बहुत * भ्रामक –

उत्तर

20

निकालें रिक्त लाइनों:

str.gsub /^$\n/, '' 

नोट: अन्य समाधान के विपरीत, यह वास्तव में रिक्त रेखाओं को हटा देता है और लाइन ब्रेक नहीं करता है :)

>> a = "a\n\nb\n" 
=> "a\n\nb\n" 
>> a.gsub /^$\n/, '' 
=> "a\nb\n" 

स्पष्टीकरण: ^ की शुरूआत से मेल खाता है और $ अंत में लाइन के ब्रेक के बाद कुछ भी नहीं है। (या निचोड़):

वैकल्पिक, अधिक स्पष्ट (हालांकि कम सुरुचिपूर्ण) समाधान

str.each_line.reject{|x| x.strip == ""}.join 
0

मूलतः

some_string = some_string.gsub(/\n/,'') 

अपडेट किया गया

some_string = some_string.gsub(/^$\n/,'') 
+1

नहीं है, यह स्ट्रिंग से सभी न्यूलाइन हटा देता है –

4

एक भी एक साथ कई नई-पंक्तियों बदलें:

fixedstr = str.gsub(/\n\n+/, "\n") 

या

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

आप के लिए 2 या अधिक पंक्ति केवल एक साथ टूट जाता है सभी घटनाओं को बदलने के लिए कोशिश कर सकते:

my_string.gsub(/\n{2,}/, '\n') 
10

निचोड़ सिर्फ इतना है कि करता है - एक regex के बिना। की

str.squeeze("\n") 
संबंधित मुद्दे