2010-09-23 46 views
1

我有以下代碼:消除零線

f = File.open("/log/mytext.txt") 
f.each_line do |i| 
i = i.delete("\n") 
puts i.inspect 

的刪除擺脫了\ n的,但結果是這樣的:

"#<MatchData \"line1\">" 
"" 
"" 
"" 
"#<MatchData \"line2\">" 

想返回:

line1 
line2 

一整天都在解決這個問題。感謝您的幫助

+0

大約在兩個小時前,這個問題幾乎被逐字逐句詢問。有沒有人聽說過Google? – 2010-09-23 00:05:41

+0

這是什麼? http://stackoverflow.com/questions/3773853如果你願意,你可以編輯你以前的問題。不需要重複。 – Nakilon 2010-09-23 00:06:01

+0

[在循環後刪除空白行]的可能重複(http://stackoverflow.com/questions/3773853/deleting-blank-lines-after-loop) – 2010-09-23 00:06:16

回答

2
p File.open("/log/mytext.txt").each_line.map(&:rstrip).delete_if(&:empty?) 

現在讓我來解釋一下:)

  1. p expr相當於puts expr.inspect,這將顯示結果。

  2. rstrip是一種更簡單的方法來刪除尾隨換行符(和任何尾隨空格)。

  3. delete_if(&:empty?),相當於delete_if{|x| x.empty?}檢查字符串是否爲空,如果是,則不讓它們通過。