1

次のテキストを編集して、すべての行が Dealer: で始まるようにします。これは、折り返し/改行がないことを意味します。System で始まる行については、折り返しで問題ありません。

ruby でのソリューションはどのようなものになるでしょうか? ありがとう

これは .txt ファイルにあります

ディーラー: 残り 5 秒のアクション ディーラー
: hitman2714 がポットを獲得 (9)
ディーラー: ハンド #1684326626D
ディーラー: Guitou699 のアクションの残り 5 秒 ディーラー: Guit¤u699 のアクション の残り 5 秒 ディーラー: baj Hasan のアクションの残り 5 秒 ディーラー : baj Hasan がタイムアウトしました ディーラー: hitman2714 は残り 5 秒 で行動 します ディーラー: hitman2714 はタイムアウトしました システム: 毎晩 $10,000 の保証 が 20 分後に開始されます ディーラー: ディーラー: ハンド #1684326626D ディーラー: Perspextive が 25 のビッグ ブラインドをポスト













望ましい出力:

ディーラー: 残り 5 秒のアクション
ディーラー: hitman2714 がポットを獲得 (9)
ディーラー: ハンド #1684326626D
ディーラー: Guitou699 のアクションの残り 5 秒 ディーラー: Guit¤u699 のアクションの残り 5 秒
ディーラー
: baj Hasan のアクションの残り 5 秒
ディーラー: baj Hasan がタイムアウトしました
ディーラー: hitman2714 は残り 5 秒で行動し
ます ディーラー: hitman2714 はタイムアウトしました
システム: 毎晩 $10,000 の保証
が 20 分後に開始されます
ディーラー: ディーラー: ハンド #1684326626D
ディーラー: Perspextive が 25 のビッグブラインドをポスト

4

4 に答える 4

2
remove_newline = false

ARGF.each_line do |line|
    if line =~ /^(Dealer|System): /
        puts if remove_newline
        remove_newline = ($1 == 'Dealer')
    end
    line.sub!(/\n/, ' ') if remove_newline
    print line
end

「システム」行の折り返しを削除してもかまわない場合、およびファイルが十分に小さい場合は、次のようにすることができます。

puts ARGF.readlines.join('').gsub(/\n(?!Dealer: |System: )/, ' ')
于 2009-12-16T14:23:18.603 に答える
1
previous = ''

ARGF.each_with_index do |line, i|
  line.chomp!
  unless i == 0
    if line =~ /^Dealer/ || line =~ /^System/
      puts previous
      previous = line
    else
      previous << (previous =~ /^System/ ? "\n" : " ") << line
    end
  else
    previous = line
  end
end
puts previous

入力と出力に STDIN と STDOUT を使用します。

于 2009-12-16T12:39:00.107 に答える
1
content.gsub(/^(.*)\n(?!(Dealer|System|\Z))/, '\1 ')
于 2009-12-26T20:12:23.867 に答える
0

grep

この種のツールがすでに存在するのに、なぜルビーを使うのか

cat oldfile | grep ^Dealer: > newfile

ルビー

これがより大きなrubyアプリケーションの一部であると想定される場合、rubyでそれを行うことに何の問題もありません。

content= File.read(oldfile)
content= content.grep(/^Dealer:/)
File.open(newfile, "w") { |f| f.write(content) }
于 2009-12-16T19:15:21.477 に答える