有没有办法在Ruby中使用gsub(或其他东西)来替换一个十六进制等效的字符串?在Mysql中你会做这样的事情:
self.connection.execute("UPDATE `dvd_actor` SET actor = replace(actor, '£,', CHAR(163));")
我在Rails中重写这个并使用gsub,就像这样:
self.actor = actor.gsub(/£/, "£").strip if actor =~ /£/
但是我已经用十六进制字符写了所有的行,并且我试图避免找出哪个字符(其中一些需要复制/粘贴,因为我没有在英文键盘中使用它们)。
我试过这个(我在这里的帖子中看到):
actor.gsub(/"/) { "0x134".hex } if actor =~ /"/
但这不是诀窍,它会产生一个数字。
或者更好的是,也许有一颗宝石可以做到这一点?基本上采用HTML值并修复它们?哦,那会很好。
答案 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)