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。

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

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 回答