2017-04-26 3 views
0

ルビー私は行ごとに改行スペースを残すruby​​行ごとに改行スペースを残すことなく印刷する方法は?

せずに印刷することができるか、これは私のファイル

name1;name2;name3 

name4;name5;name6 

である私は、これは私の出力

name1 

name2 

name3 

zero 

name4 

name5 

name6 

zero 
でこのコマンドを

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 

は、それらの一つ一つは、異なる行に印刷されます、あなたはカンマで区切られた引数でputsを呼び出した場合、私はこの問題

答えて

1

次の2つのソリューションを持っている:

あなたはここに、ルビーの文字列補間(http://ruby-for-beginners.rubymonstas.org/bonus/string_interpolation.html)を使用することができます。

あなたが現在そうであるように最初のものはputsを使用しています:

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

秒1はwrite代わりのputsを使用しています。

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

非常にありがとうございます – zzero

1

を聖霊降臨祭助けてください。

f.puts "#{parts[0]};#{parts[1]};#{parts[3]};#{input3}"

+0

非常にありがとうあなたの答えは – zzero

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 

私はありませんあなたが指定したときにセミコロンで文字列を分割している理由を確かめてくださいあなたは以下の出力を望んでいました。配列を解析するのではなく、文字列の最後に ";"を追加するだけで良いでしょう。

名1; name2の; NAME3;ゼロ

NAME4; name5; name6;ゼロ

+0

非常にありがとうございます。 – zzero

1

あなたはzero値をチェックするif文を指定することができます。

例:

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は新しい行に印刷されます。

このロジックをコードに実装するだけでよいです。

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 

それとも、実際に物事を解析したい場合は、クリーンアップのための機会を提供:

+0

大変ありがとうございます。 、 – zzero

2

より最小限のアプローチは、単にそれぞれの行に何かを追加することである

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 
+0

あなたの助けになりました – zzero

関連する問題