Mr.*_*ael 5 ruby string unicode
Unicode字符串:
string = "CEO Frye \u2013 response to Capitalism discussion in Davos: Vote aggressively with your wallet against firms without social conscience."
Run Code Online (Sandbox Code Playgroud)
我试过了(通过这是在Ruby中对Unicode转义序列进行转义的最佳方法吗?):
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.
Run Code Online (Sandbox Code Playgroud)
但是输出(到文件)仍然与输入相同!任何帮助,将不胜感激。
编辑:不使用IRB,使用RubyMine,并且输入是从Twitter解析的,因此"\u"没有"\\u"
编辑2:

您是从 尝试irb,还是用 输出字符串p?
String#inspect(从irb和调用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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3232 次 |
| 最近记录: |