From: rubikitch@... Date: 2009-07-17T02:33:43+09:00 Subject: [ruby-list:46221] Re: ファイル出力の動作について From: "Jun'ya Shimoda" Subject: [ruby-list:46216] ファイル出力の動作について Date: Thu, 16 Jul 2009 20:01:31 +0900 るびきちです。 > 今Pascalソースファイルのコンバータを作成しております。 > その際、文字列のchompの動作が理解できなかったので > 質問させてください。 とりあえずリファレンスマニュアルから引用。 リファレンスマニュアル参照環境を構築しておきましょう。 = Ruby 1.9.0 type: instance_method name: chomp names: chomp visibility: public kind: defined library: _builtin --- chomp(rs = $/) -> String self の末尾から rs で指定する改行コードを取り除いた文字列を生成し返します。 ただし、rs が "\n" ($/ のデフォルト値) のときは、 実行環境によらず "\r", "\r\n", "\n" のすべてを改行コードとみなして取り除きます。 rs に nil を指定した場合、このメソッドは何もしません。 rs に空文字列 ("") を指定した場合は「パラグラフモード」になり、 末尾の連続する改行コードをすべて取り除きます。 例: p "foo\n".chomp # => "foo" p "foo\n".chomp("\n") # => "foo" p "foo\r\n".chomp("\r\n") # => "foo" $/ = "\n" # デフォルト値と同じ p "foo\r".chomp # => "foo" p "foo\r\n".chomp # => "foo" p "foo\n".chomp # => "foo" p "foo\n\r".chomp # => "foo\n" > <問題の箇所でやろうとしていること> > Pascalの文字列「'」で囲まれた部分を > @w_lines(Array型です)に抽出し、ファイルにputsする。 > 文字列が複数行にまたがる場合は@w_linesも複数になります。 > > 複数行をputsする際、出力ファイルに余分な改行が入ってしまうので > chompを使いました(もしかするとこれが既におかしいかも?)。 デバッガの出力よりも問題を再現させるコンパクトなコードを見せてください。 chompやputsが怪しいと思っているならば、再現コードは作成できるでしょう。 そのほうが質問に答えやすいです。 なぜなら、動作確認がしやすいからです。 回答者としては、とにかく動くコードが欲しいです。 -- rubikitch Blog: http://d.hatena.ne.jp/rubikitch/ Site: http://www.rubyist.net/~rubikitch/ Twit: http://twitter.com/rubikitch/ 『Ruby逆引きハンドブック』 http://d.hatena.ne.jp/rubikitch/20090525/rubybook