2012-05-24 42 views
0

我粘貼文本從Windows純文本文件到text_area。下面的正則表達式適用於在軌文本只有當我手動刪除CRLF線從寫字板文本返回:無法刪除奇怪的窗口行結尾

@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 

行收益顯示爲CRLF,當我有問題在記事本中打開純文本文件++。

另一個線索:當我調用對象時,從rails控制檯的輸出顯示線返回爲某種類似製表符的字符,或者可能是兩個空格,但是當我在瀏覽器的show view中查看對象時看起來好像字符已被刪除,即使正則表達式仍然不起作用。

+0

什麼是文件的編碼? – prater

+0

Notepad ++報告它是Dos \ Windows ANSI – blaha

+0

附加信息:/ m多行標誌不會使正則表達式工作。 – blaha

回答

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!