清理MS-Word中的粘贴文本

时间:2010-06-23 18:54:14

标签: ruby-on-rails ruby regex refactoring

这是我狂野而又笨拙的伪代码。有谁知道如何使这个真实?

背景:

此动态内容来自ckeditor。许多人都在其中粘贴Microsoft Word内容。不用担心,如果我只是将该属性称为未触及,则它会加载漂亮。但问题是,我希望它只是缩写为125个字符。当我向其添加截断时,所有Microsoft Word脚本都会弹出。然后我添加了simple_format,并进行了清理和截断,甚至让我的控制器开始发现MS将要制作的特定变量并将其格式化。但是它们太多了,而且这似乎是一种非常混乱的方法。如此!意识到它本身就是干净的。我想,为什么不切片呢。但是,Microsoft Word文本变为空白但仍保持其在字符串中的编号位置。所以我想出了下面这个(可能很糟糕)的解决方案。

分三步。

  1. 当文本解析时,它不会显示任何MSWord垃圾。但该文本仍然在切片声明中占有一个位置。所以我想使用正则表达式找到第一个真正的角色。
  2. 取出该字符,找出其编号位置在总字符串中的位置。
  3. 使用切片语句将其剪切。

    def about_us_truncated
      x = self.about_us.find.first(regExp representing first actual character)
      x.charCount = y
      self.about_us[y..125]
    end
    
  4. 我得到的唯一的另一个想法是一个正则表达式语句,允许它显式地切片实际字符,如下所示:

    about_us([a-zA-Z][0..125]),但这绝对不是它的编写方式。

    以下是MS Word垃圾的一些示例文本:

     ≪! [If Gte Mso 9]>≪Xml>≪Br /> ≪O:Office Document Settings>≪Br /> ≪O:Allow Png/>≪Br /> ≪/O:Off...
    

3 个答案:

答案 0 :(得分:1)

你没有提供太多信息,但是在寻求帮助之前,不要过于谨慎地试图建立这个正则表达式...

获取示例文本并将其粘贴到测试字符串区域的Rubular中,然后开始构建正则表达式。它在底部有一个很好的快速参考。

答案 1 :(得分:1)

偶然发现了这个

http://gist.github.com/139987

它看起来需要sanitize gem。

答案 2 :(得分:1)

这在技术上并不是一个直接的答案,但它似乎是你能找到的最好的答案。

为了防止MS Word,您应该使用CK Editor的内置MS文字消毒剂。这是因为为它编写正则表达式可能非常复杂,你可以很容易地将标签分成两半并用它来破坏你的网站。

我作为解决方法所做的是,我在CK编辑器中以纯文本形式强制粘贴。