如何在Ruby中转换字符串

时间:2011-10-12 15:44:13

标签: ruby string

假设我们有字符串'\342\200\231'(与"\\342\\200\\231"相同)。将此字符串转换为"\342\200\231"(与 Unicode字符相同)的快速方法是什么?

2 个答案:

答案 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!

我应该给出一个更有帮助的答案...... 编辑:其他人刚刚做了。