0

Windowsのプレーンテキストファイルからtext_areaにテキストを貼り付けています。次の正規表現は、ワードパッドのテキストからCRLF行の戻り値を手動で削除した場合にのみ、Railsのそのテキストで機能します。

@scan.raw.scan(/(?<=stamps\|\|[a-z,0-9,A-Z])(.*?)(?=\|time)/).each do |body|

行末を削除するためにさまざまなフォーラムで見つけたgsubは、正規表現を混乱させる何かを残しています。

(モデルから)

before_create :remove_returns

def remove_returns
  #get rid of pesky carriage returns
  raw.gsub!(/\r\n?/, "")
end

Notepad ++で問題のプレーンテキストファイルを開くと、行はCRLFとして表示されます。

別の手がかり:オブジェクトを呼び出したときのレールコンソールからの出力は、行が何らかのタブのような文字、またはおそらく2つのスペースとして返されることを示していますが、ブラウザーのショービューでオブジェクトを表示すると、正規表現がまだ機能しない場合でも、文字は削除されました。

4

1 に答える 1

0

問題は、モデルのbefore_createメソッドで行末を削除し、その後に行末の削除に依存する別のメソッド(before_create)が続くことであることが判明しました。コントローラでアクションを実行した後、「保存」を実行しました。代わりは。

def create
@scan = Scan.new(params[:scan])

#eliminate pesky carriage returns
@scan.raw.gsub!(/\r\n?/, "")
@scan.raw.gsub("\u000a","")
@scan.raw.gsub!("\u000d","")
@scan.raw.gsub!("\u0009","")
@scan.raw.gsub!("\u000c","")
@scan.raw.gsub!("\u0085","")
@scan.raw.gsub!("\u2028","")
@scan.raw.gsub!("\u2029","")
@scan.raw.gsub!(/0A\0A/u,"")
@scan.save!
于 2012-05-29T19:22:31.117 に答える