清理&文本中的样式字符

时间:2011-10-18 14:10:48

标签: ruby-on-rails ruby

我从一个包含很多字符的Feed中获取文字:

Insignia™ 2.0 Stereo Computer Speaker System (2-Piece) - Black
4th-Generation Apple® iPod® touch

是否有一种简单的方法可以摆脱这些,或者我是否必须预测要删除哪些字符并使用删除方法删除它们?此外,当我尝试删除

&

str.delete("&")

它留下了“amp;”有没有更好的方法来删除这种类型的角色?我需要重新编码文本吗?

3 个答案:

答案 0 :(得分:21)

String#delete肯定不是你想要的,因为它适用于字符,而不是字符串作为一个整体。

尝试

str.gsub /&/, ""

您可能还想尝试用文字&符替换&,例如:

str.gsub /&/, "&"

如果这更接近您真正想要的,您可能会获得最佳结果,无法使用HTML字符串。如果是这样,试试这个:

CGI::unescapeHTML(str)

unescapeHTML方法的详细信息是here

答案 1 :(得分:1)

如果您从'feed'(即RSS XML)获取数据,那么您应该使用像Nokogiri这样的XML解析器来处理XML。这将自动取消HTML实体,并允许您直接获取正确的字符串表示。

答案 2 :(得分:0)

要删除尝试使用gsub方法,可以这样:

text = "foo&bar"
text.gsub /\b&\b/, ""  #=> foobar