ruby如何在不为每一行留下换行空间的情况下进行打印?

时间:2017-04-26 22:36:23

标签: ruby

ruby​​如何在不为每行留下换行符空间的情况下进行打印

这是我的档案

name1;name2;name3

name4;name5;name6

我有这个命令

File.open("text2xycff.txt", "r") do  |fix|
  fix.readlines.each do |line|
    parts = line.chomp.split(';') 

input3= zero

 File.open('text2xyczzzz2.txt', 'a+') do |f| 
   f.puts  parts[0] ,  parts[1], parts[2]  ,input3
 end



end

end

这是我的输出

name1

name2

name3

zero

name4 

name5

name6

zero

我需要输出这个

name1;name2;name3;zero

name4;name5;name6;zero

请帮我解决这个问题

5 个答案:

答案 0 :(得分:2)

更简单的方法是在每一行上添加一些内容:

File.open("text2xycff.txt", "r") do  |input|
  File.open('text2xyczzzz2.txt', 'a+') do |output| 
    input.readlines.each do |line|
      output.puts(line.chomp + ';zero')
    end
  end
end

或者,如果您想要实际解析事物,这提供了清理的机会:

File.open("text2xycff.txt", "r") do  |input|
  File.open('text2xyczzzz2.txt', 'a+') do |output| 
    input.readlines.each do |line|
      parts = line.chomp.split(/;/)
      parts << 'zero'

      output.puts(parts.join(';'))
    end
  end
end

答案 1 :(得分:1)

如果用逗号分隔的参数调用p,则每个参数都将打印在不同的行上。

您可以在此处使用ruby字符串插值(http://ruby-for-beginners.rubymonstas.org/bonus/string_interpolation.html):

s.x

答案 2 :(得分:1)

你有两个解决方案。

第一个使用puts正如您目前所做的那样:

File.open('yourfile.txt', 'a+') { |f|
    f.puts "#{parts[0]}#{parts[1]}#{parts[2]}#{input3}"
}

第二个使用write代替puts

File.open('yourfile.txt', 'a+') { |f| 
    f.write parts[0]
    f.write parts[1]
    f.write parts[2]
    f.write input3
}

答案 3 :(得分:1)

尝试:

File.open("test_io.txt", "r") do  |fix|
  fix.readlines.each do |line|
    File.open('new_file10.txt', 'a+') do |f|
      next if line == "\n"
      f.puts "#{line.chomp};zero"
    end
  end
end

当你指定想要下面的输出时,我不确定为什么你用分号分割字符串。只需将“;”附加到字符串的末尾而不是解析数组,就会更好。

NAME1; NAME2; NAME3;零

NAME4; NAME5; name6;零

答案 4 :(得分:1)

您可以指定if语句来检查zero值。

示例:

arr = ["name1", "name2", "name3", "zero", "name4", "name5", "name6", "zero"];
arr.each { |x|
  if x != "zero" then
    print x
  else
    puts x
  end
}

输出:

name1name2name3zero
name4name5name6zero

print将内联打印。

puts将在新行上打印。

只需在代码中实现此逻辑,就可以了。