重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Ruby初心者中の初心者です。

以前、この場でとある処理を行うプログラムをご教授していただきました。
その際のデータ出力コードが以下のとおりです。

File.open(OUTPUT_FILE, 'w') do |f|
output_matrix.each do |row|
id = row.shift
f.puts id + "\s" + row.join("")
end

このコードですと、各行に、id+スペース+rowデータ というデータが出力されるのですが、
rowデータを20文字目から出力するようにしたいのです。
なお、idはすべておおよそ10文字程度です。

ご教授願います。

A 回答 (2件)

No1です。

ちょっと汚いですが、これでいかがでしょうか。
右によりすぎるなら、-20を-19にしてください。
-----------------------------------------------------
File.open(OUTPUT_FILE, 'w') do |f|
output_matrix.each do |row|
id = row.shift
f.printf("%-20s",id)
f.print row.join(""),"\n"
end
end
    • good
    • 0
この回答へのお礼

無事できました!
親切に対応していただき大変ありがとうございました

お礼日時:2018/09/27 14:28

こういうことですか?


rowデータ(row.join("")の結果)を20文字目から出力(先頭は0文字目とします)
------------------------------------
File.open(OUTPUT_FILE, 'w') do |f|
output_matrix.each do |row|
id = row.shift
f.puts id + "\s" + row.join("")[20..-1]
end
end
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
失礼しました。こちらの説明が悪かったです。

idの桁数が8桁だったり、9桁だったりでrowデータの開始位置ががたがたになってしまうので、それを揃えるためにrowデータの開始位置を20桁目(テキストデータにしたときのタブ位置と呼べばよいのでしょうか)にして出力したいのです。

お詳しい方にとってはとても簡単なことなのかもしれませんが、何卒ご教授のほどよろしくお願いいたします。

お礼日時:2018/09/27 10:05

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!