Ruby用十六进制等效替换html实体

时间:2012-01-16 16:34:44

标签: ruby ruby-on-rails-3.1

有没有办法在Ruby中使用gsub(或其他东西)来替换一个十六进制等效的字符串?在Mysql中你会做这样的事情:

    self.connection.execute("UPDATE `dvd_actor` SET actor = replace(actor, '&pound,', CHAR(163));")

我在Rails中重写这个并使用gsub,就像这样:

self.actor = actor.gsub(/£/, "£").strip if actor =~ /£/

但是我已经用十六进制字符写了所有的行,并且我试图避免找出哪个字符(其中一些需要复制/粘贴,因为我没有在英文键盘中使用它们)。

我试过这个(我在这里的帖子中看到):

actor.gsub(/"/) { "0x134".hex  } if actor =~ /"/

但这不是诀窍,它会产生一个数字。

或者更好的是,也许有一颗宝石可以做到这一点?基本上采用HTML值并修复它们?哦,那会很好。

2 个答案:

答案 0 :(得分:0)

我会尝试"0x134".hex.to_s(16)。它将“0x134”转换为“134”。

答案 1 :(得分:0)

我相信我找到了它:一个名为htmlentities的宝石应该做我想要的。所以我有这个:

ampersands = where("actor LIKE ?", "%&%;%")
ampersands.each do |actor|
  fixed_actor = fixer.decode(actor.actor) 
  self.update(actor.id, :actor => fixed_actor)