2011-09-07 19 views
8

Jak usunąć puste linie z ciągu? Próbowałem some_string = some_string.gsub (/^$ /, "");Ruby usuń puste linie ze stringów

i wiele więcej, ale nic nie działa.

+0

możliwe duplikat [Ruby: Zgrabna Nowe puste wiersze] (http://stackoverflow.com/questions/1040390/ruby-trim-new-blank-lines) – bragboy

+2

to nie jest duplikatem. ten tytuł jest * bardzo * mylący –

Odpowiedz

20

usuwanie pustych linii:

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

Uwaga: w przeciwieństwie do niektórych innych rozwiązań, to faktycznie usuwa puste linie, a nie linie podziału :)

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

Objaśnienie: dopasowuje początek ^ i kończy $ linii z niczym pomiędzy, po której następuje podział wiersza. (! Lub wycisnąć):

alternatywna, bardziej wyraźny (choć mniej eleganckie) rozwiązanie

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

Pierwotnie

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

Updated

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

nope, to usuwa wszystkie nowe linie z ciągu –

4

Wymień kilka nowych linii z jednym z nich:

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

lub

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

Można spróbować zastąpić wszystkie wystąpienia 2 lub więcej linii zrywa z zaledwie jednym:

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

wycisnąć właśnie to robi - bez regex.

str.squeeze("\n")