Rubyを教えてください。環境はウィンドウズXPです。例えばマイドキュメントにtest.txtというファイルがあるとします。このファイルの中身は


abcdefg@abcde.com,faafa,
abccc,afaafa,fafaa,aafa,
defere,sthere,slip,abut,
bitafa,fafaal

という適当な文字列が入っているとします。これを正規表現を使って先頭の空白を消し、","を"\n"に変更したいと思っています。秀丸であれば、
置換で ^ * を何も無しに置き換え、,を\nに単純に変更するだけでいいと思いますが、rubyを使ったらどのように書けるのか教えてください。ウィンドウズで動くプログラムを教えてください。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2007/02/13 20:19:29
  • 終了:2007/02/20 20:20:03

回答(2件)

id:Kumappus No.1

くまっぷす回答回数3784ベストアンサー獲得回数1852007/02/13 20:52:27

ポイント35pt

http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=String#g...

while gets()

  puts $_.gsub(/^\s+/,"").gsub(",","\n")

end

でいけるかな?この場合、行末尾の,に加えてもともとの改行も改行になってしまうので上記のままのテキストだと

abcdefg@abcde.com

faafa

(空行)

abccc

afaafa

fafaa

aafa

(空行)

defere

sthere

slip

abut

(空行)

bitafa

fafaal

みたいになってしまいますが、それが嫌な場合はちょっと追加して

while gets()

  puts $_.gsub(/^\s+/,"").gsub(",","\n").gsub(/^\n$/,"")

end

でいいと思います。

使いかたはこのrubyスクリプトをhoge.rbとすると

コマンドプロンプトから

ruby hoge.rb nyuuryoku.txt > shuturyoku.txt

で結果がshuturyoku.txtに入ります。

もっとスマートな回答もありそうですけど…。

(なお、はてなの回答の制約で見づらくなるので上記スクリプトには全角の空白が入ってます。コピペしたらそこは半角の空白かタブに変えてください)

id:yhara No.2

yhara回答回数2ベストアンサー獲得回数02007/02/13 23:39:03

ポイント35pt

文字列の先頭の空白を取り除くにはString#lstripというメソッドが使えます。

http://www.ruby-lang.org/ja/man/?cmd=view;name=String#lstrip

ということで、

ARGF.each do |line|
  print line.lstrip.gsub(/,/, "\n")
end

でいかがでしょう。

使い方はKumappusさんのと同じく、上のスクリプトをconvert.rbというファイルに保存したとすると

ruby convert.rb test.txt > test2.txt

でtest.txtを変換したものがtest2.txtに書き込まれます。

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません