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
请帮我解决这个问题
答案 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
将在新行上打印。
只需在代码中实现此逻辑,就可以了。