人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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

●質問者: popattack
●カテゴリ:コンピュータ インターネット
✍キーワード:Ruby test txt XP ウィンドウ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● くまっぷす
●35ポイント

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に入ります。

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

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


2 ● yhara
●35ポイント

文字列の先頭の空白を取り除くには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に書き込まれます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ