2010-09-23 49 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?}检查字符串是否为空,如果是,则不让它们通过。