2011-09-07 127 views
8

如何從字符串中刪除空行?我試過 some_string = some_string.gsub(/^$ /,「」);Ruby從字符串中刪除空行

以及更多,但沒有任何工作。

+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

nope,這將刪除字符串中的所有換行符 –

4

並設置一個只替換多個新行:

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

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

你可以嘗試更換的2個或更多行只有一個打破所有出現:

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

擠了這一點 - 沒有一個正則表達式。的

str.squeeze("\n")