我将文本从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视图中查看该对象时,它会出现好像角色已被删除,即使正则表达式仍无效。
答案 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!