未定義のメソッド `gsub '、変数に関する問題の可能性

benjfriedrich

入力テキストファイルを取得して、特定の方法でhtmlタグを挿入しようとしています。ファイルの最初の部分は、2番目の部分とは異なる方法でフォーマットする必要があるため、私がやろうとしていることは次のとおりです。

  1. ファイルをインポートする
  2. ファイルをクリーンアップします
  3. ファイルを2つの部分に分割します
  4. パート1をフォーマットする
  5. パート2をフォーマットする
  6. パーツ1と2を新しいファイルに再結合します

基本的に、手順1〜3と6を実行できましたが、手順4を追加すると、問題が発生します。

これまでの私のコードは次のとおりです。

file_names = ['ex_poem.txt']

file_names.each do |file_name|
  text = File.read(file_name)

  #clean the text
  # remove extra returns
  clean_text = text.gsub(/\n(\n)+/, "\n\n")

  # remove spaces from ends of lines
  clean_text = clean_text.gsub(/ +\n/, "\n")

  # remove spaces blank lines
  clean_text = clean_text.gsub(/(?<=\n) +/, "")

  # remove returns at start of doc
  clean_text = clean_text.gsub(/\A\n*/, "")

  # remove returns at end of doc
  clean_text = clean_text.gsub(/\n*\Z/, "")

  # parse out poem section
  poem = clean_text.scan(/[\s\S]*(?=\n\n@@@)/)
  poem = poem.gsub(/\A|(?<=\n)+(?!\n)+(?!\Z)/,"<p class=\"poetry-line\">")
  #  poem = poem.gsub(/\n\n/, "\n\n\n\n\n")

  # parse out notes section
  notes = clean_text.scan(/(?<=@@@\n\n)[\s\S]*/)

  puts clean_text
  puts poem
  puts notes  
end

これにより、次のエラーが発生します。

poemify.2.rb:22:in `block in <main>': undefined method `gsub' for #<Array:0x00007f94b104c2c8> (NoMethodError)
  from poemify.2.rb:3:in `each'
  from poemify.2.rb:3:in `<main>'

しかし、私がその行にコメントすると

poem = poem.gsub(/\A|(?<=\n)+(?!\n)+(?!\Z)/,"<p class=\"poetry-line\">")

その後、スクリプトは正常に実行されます。.gsubスクリプトの前半でclean_text変数を使用して正常に機能するため、混乱しますが、変数を使用するとpoem機能しません。しかしputs poem、問題のある行がコメントアウトされている場合、実際には正常に機能します。

変数などを初期化する方法について、非常に基本的なことを理解していないのではないかと思いますが、行き詰まっています。

更新:

どのように表示されて後に.scan回したpoem配列に、私は私が使用できるように正規表現を作り直し.gsub、そうpoemnotes文字列のだろう、と私はして働き続けることができ.gsub、私は理解していることのように:

poem = clean_text.gsub(/\n(?=@@@\n\n)[\s\S]*/, "")

notes = clean_text.gsub(/[\s\S]*(?<=\n\n@@@\n\n)/, "")

判定

poemの結果を保持しますscanこれは、Arrayではなく、を返しますString

ここでドキュメントを見ることができます:https//ruby-doc.org/core-2.2.0/String.html#method-i-scan

gsubで呼び出すことはできませんArraymap超えてArraygsub各要素を呼び出すことができます。

あなたのスキャン結果は、あなたがする必要がありますグループ含まれている場合はmap、初期の各要素の上にmap、それが含まれていますArrayArray秒。

また、一致するものがない場合でも、空のを受け取りますArray

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

121.462488:Floatの未定義のメソッド `gsub '

分類Dev

2014-10-3117:55:55 +0530:Timeの未定義のメソッド `gsub '

分類Dev

#<URI::HTTPS:0x0000000404f3b8> の未定義のメソッド `gsub'

分類Dev

「未定義の可能性のあるメソッドの呼び出し」に関するActionScript3の問題

分類Dev

Ruby:「未定義のメソッド」エラー。gsubをより効果的に使用する方法は?

分類Dev

RSpecの「to」メソッド(未定義のメソッド)の問題

分類Dev

未定義のメソッドソング

分類Dev

質問の未定義のメソッド

分類Dev

Railsアプリの未定義のメソッドに関する問題

分類Dev

Railsの未定義のメソッド

分類Dev

各Rubyの未定義のメソッド

分類Dev

Request :: all()の未定義のメソッド

分類Dev

Railsの未定義のメソッド `each '

分類Dev

Railsの未定義のメソッド

分類Dev

eval()の未定義のメソッド

分類Dev

googlebooksでの未定義のメソッド

分類Dev

ActiveRecordの未定義のメソッド

分類Dev

Postの未定義のメソッド `featured '

分類Dev

Sidekiq:NoMethodError:未定義のメソッド `perform '

分類Dev

RailsRspec-未定義のメソッド `session '

分類Dev

nil:NilClassの未定義メソッド `+ '-Ruby

分類Dev

未定義のメソッド#sanitizefor ActiveRecord :: Base

分類Dev

未定義のメソッド 'new' Kafka

分類Dev

未定義のメソッド `images_will_change! '

分類Dev

未定義のメソッドタイプ

分類Dev

文字列の未定義メソッド 'push'

分類Dev

未定義のメソッド `simple_form_for '

分類Dev

未定義のメソッドRuby

分類Dev

true:TrueClass(NoMethodError)の未定義メソッド `<'

Related 関連記事

  1. 1

    121.462488:Floatの未定義のメソッド `gsub '

  2. 2

    2014-10-3117:55:55 +0530:Timeの未定義のメソッド `gsub '

  3. 3

    #<URI::HTTPS:0x0000000404f3b8> の未定義のメソッド `gsub'

  4. 4

    「未定義の可能性のあるメソッドの呼び出し」に関するActionScript3の問題

  5. 5

    Ruby:「未定義のメソッド」エラー。gsubをより効果的に使用する方法は?

  6. 6

    RSpecの「to」メソッド(未定義のメソッド)の問題

  7. 7

    未定義のメソッドソング

  8. 8

    質問の未定義のメソッド

  9. 9

    Railsアプリの未定義のメソッドに関する問題

  10. 10

    Railsの未定義のメソッド

  11. 11

    各Rubyの未定義のメソッド

  12. 12

    Request :: all()の未定義のメソッド

  13. 13

    Railsの未定義のメソッド `each '

  14. 14

    Railsの未定義のメソッド

  15. 15

    eval()の未定義のメソッド

  16. 16

    googlebooksでの未定義のメソッド

  17. 17

    ActiveRecordの未定義のメソッド

  18. 18

    Postの未定義のメソッド `featured '

  19. 19

    Sidekiq:NoMethodError:未定義のメソッド `perform '

  20. 20

    RailsRspec-未定義のメソッド `session '

  21. 21

    nil:NilClassの未定義メソッド `+ '-Ruby

  22. 22

    未定義のメソッド#sanitizefor ActiveRecord :: Base

  23. 23

    未定義のメソッド 'new' Kafka

  24. 24

    未定義のメソッド `images_will_change! '

  25. 25

    未定義のメソッドタイプ

  26. 26

    文字列の未定義メソッド 'push'

  27. 27

    未定義のメソッド `simple_form_for '

  28. 28

    未定義のメソッドRuby

  29. 29

    true:TrueClass(NoMethodError)の未定義メソッド `<'

ホットタグ

アーカイブ