我从一个包含很多字符的Feed中获取文字:
Insignia™ 2.0 Stereo Computer Speaker System (2-Piece) - Black
4th-Generation Apple® iPod® touch
是否有一种简单的方法可以摆脱这些,或者我是否必须预测要删除哪些字符并使用删除方法删除它们?此外,当我尝试删除
&
与
str.delete("&")
它留下了“amp;”有没有更好的方法来删除这种类型的角色?我需要重新编码文本吗?
答案 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