无法删除奇怪的窗口行结尾

时间:2012-05-24 15:27:58

标签: ruby ruby-on-rails-3

我将文本从Windows纯文本文件粘贴到text_area。只有当我从wordpad中的文本中手动删除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。

另一个线索:当我调用对象时,rails控制台的输出显示该行返回某种类似标签的字符,或者可能是两个空格,但是当我在浏览器的show视图中查看该对象时,它会出现好像角色已被删除,即使正则表达式仍无效。

1 个答案:

答案 0 :(得分: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!