2009年7月17日

[ruby-list:46221] Re: ファイル出力の動作について

From: "Jun'ya Shimoda" <jun-shimo@xxxxx>
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


投稿者 xml-rpc : 2009年7月17日 02:33
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/86737
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。