在Ruby on Rails中取消转义字符串

3

Google图书搜索会返回类似以下输出:

Introducing Little Simon's new Baby Snoopy line, featuring Charles Schulz'scharacters as babies. 

如何将此转换为正常可读字符串?

我尝试使用URI.unescape并在网上搜索,但找不到任何信息。我是Ruby on Rails的新手。

3个回答

4
也许你需要告诉Rails它是HTML安全的......

控制器

@str = get_str_from_google_book_search(ie.your.string)

视图

<%= @str.html_safe %>

0

字符串已经是HTML格式的,而且你正在使用Rails,所以我不确定你是否真的需要进一步简化它。虽然你示例字符串中的HTML数字字符引用确实有ASCII和Unicode等价物,但任何更复杂的内容,比如<p>都会引起麻烦。

然而,对于你的示例字符串,有一种方法。

你可以使用HTML解析器将字符串解析为片段。

require 'nokogiri'
s1 = 'How&#39;s life?'
s2 = Nokogiri::HTML.fragment(s1).to_s
puts s2

0

你不需要转义那个字符串。以下代码可以正常工作。

irb(main):001:0> s="Introducing Little Simon's new Baby Snoopy line, featuring Charles Schulz'scharacters as babies."
=> "Introducing Little Simon's new Baby Snoopy line, featuring Charles Schulz'scharacters as babies."
irb(main):002:0> s
=> "Introducing Little Simon's new Baby Snoopy line, featuring Charles Schulz'scharacters as babies."

如果您需要转义一个字符,例如“”,您可以使用\进行转义,如下所示:
irb(main):008:0> s = "a\"b"
=> "a\"b"
irb(main):009:0> puts s
a"b
=> nil

我觉得你误解了我的问题,我是从其他地方获取这些数据的,而不是手动添加这些数据。 - Hemant Verma
对的,我认为这里确切的问题是数字字符引用;总的问题是任何HTML标记。我已经编辑了问题,这样您就可以看到引用了。 - DigitalRoss

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接