在Ruby中以unicode代码的形式打印字符串

时间:2013-08-02 00:56:33

标签: ruby string unicode

我可以通过"hello"调用某种方法来获取'\u0068\u0065\u006c\u006c\u006f'吗?

2 个答案:

答案 0 :(得分:2)

是和否。 String#codepoints以整数数组形式返回:

"hello".codepoints #=> [104, 101, 108, 108, 111]

如果你需要它作为转义序列,试试这个:

"hello".codepoints.map {|c| "\\u#{sprintf("%04x", c)}"}.join

如果你想要另一个解决方案(在评论中归功于@MattyK):

"hello".codepoints.map{|c| '\u%04X' % c}.join

答案 1 :(得分:1)

喜欢这个吗?

"hello".unpack('U*').map{ |i| "\\u" + i.to_s(16).rjust(4, '0') }.join
=> "\\u0068\\u0065\\u006c\\u006c\\u006f"