0

OK、ファイルから -- を含む行を削除しようとしました。ファイルは次のようになります。

  -----------------------------------------------------------------
  Lorem ipsum....
  Text.....

そして私のコード:

  f = File.open('C:\websites\ahr.txt')
  f.each_line do |line|
    if line.include? '-'
     a = line
     line.delete a
    end
  end
f = File.close

しかし、それはうまくいきません!次のエラーが表示されます。

 file.rb:5:in `delete': invalid range "-- (ArgumentError)
 " in string transliteration
    from file.rb:5:in `block in <main>'
    from file.rb:2:in `each_line'
    from file.rb:2:in `<main>'

どうしたの?

4

2 に答える 2

2

どうしたの?

このようなもの:

line = "-----------------------------------\n"
 => "-----------------------------------\n"

a = line
 => "-----------------------------------\n"

line.delete a
 ArgumentError: invalid range "--
 " in string transliteration

メソッドによって発生するエラーはdelete、特殊な文字範囲構文にダッシュが使用されているためです。

"hellob".delete "a-e"
 => "hllo"

おそらく、目標を解決するために別のアプローチを取りたいと思うでしょうが、行が削除されるとデータで何をしたいのかを示さないため、何を望んでいるのかを伝えるのは困難です. 単にline変数を処理するということは、Stringその時点で変更されていることを意味します。

于 2013-07-25T10:12:46.027 に答える
1

他の人が言ったように、grep で実行できますが、Ruby で完全に実行したい場合は、この質問を見てください。最初の回答が役に立ちます。

于 2013-07-25T10:13:45.497 に答える