假设我们有字符串'\342\200\231'
(与"\\342\\200\\231"
相同)。将此字符串转换为"\342\200\231"
(与’
Unicode字符相同)的快速方法是什么?
答案 0 :(得分:3)
提案:
s.gsub(/\\(\d{3})/) { $1.oct.chr }
这取决于您对输入的假设。
答案 1 :(得分:1)
您似乎要问的是如何将12个字符的字符串更改为三个字符的字符串。
'\342\200\231'
长度为12个字符。
"\342\200\231"
长三个字符;实际上是三个字节长,但在Ruby 1.8中,它大致相同,因为字符串仍然是字节序列。
这是一个 EVIL 的答案(你说的很快),利用eval
进行“解析”:
irb(main):017:0> s = '\342\200\231'
=> "\\342\\200\\231"
irb(main):018:0> t = eval('"' + s + '"')
=> "\342\200\231"
irb(main):019:0> s.length
=> 12
irb(main):020:0> t.length
=> 3
对不起eval!
我应该给出一个更有帮助的答案...... 编辑:其他人刚刚做了。