统一码字符串:
string = "CEO Frye \u2013 response to Capitalism discussion in Davos: Vote aggressively with your wallet against firms without social conscience."
我尝试过(通过这是在 Ruby 中取消转义 unicode 转义序列的最佳方法吗? https://stackoverflow.com/questions/7015778/is-this-the-best-way-to-unescape-unicode-escape-sequences-in-ruby):
def unescape_unicode(s)
s.gsub(/\\u([\da-fA-F]{4})/) {|m| [$1].pack("H*").unpack("n*").pack("U*")}
end
unescape_unicode(string) #=> CEO Frye \u2013 response to Capitalism discussion in Davos: Vote aggressively with your wallet against firms without social conscience.
但输出(到文件)仍然与输入相同!任何帮助,将不胜感激。
编辑:
不使用 IRB,使用 RubyMine,并且输入是从 Twitter 解析的,因此单个"\u"
not "\\u"
Edit 2:
你正在尝试从irb
,或输出字符串p
?
String#inspect
(从调用irb
and p str
) 将 unicode 字符转换为\uxxxx
格式以允许在任何地方打印字符串。另外,当您输入"CEO Frye \u2013 response to..."
,这是由 ruby 解析器解析的转义序列。它是最终字符串中的 unicode 字符。
str1 = "a\u2013b"
str1.size #=> 3
str2 = "a\\u2013b"
str2.size #=> 8
unescape_unicode(str2) == str1 #=> true
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)