如何在Ruby中转换字符串

如何在Ruby中转换字符串,ruby,string,Ruby,String,假设我们有字符串'\342\200\231'(与“\\342\\200\\231”相同)。将此字符串转换为“\342\200\231”(与”Unicode字符相同)的快速方法是什么?您似乎要问的是如何将12个字符的字符串更改为三个字符的字符串 '\342\200\231' 长度为12个字符 "\342\200\231" 有三个字符长;实际上有三个字节长,但在Ruby 1.8中几乎相同,因为字符串都是字节序列 这里有一个邪恶的答案给你(你说得很快),它利用eval进行“解析”: 对不起,我的评

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

您似乎要问的是如何将12个字符的字符串更改为三个字符的字符串

'\342\200\231'
长度为12个字符

"\342\200\231"
有三个字符长;实际上有三个字节长,但在Ruby 1.8中几乎相同,因为字符串都是字节序列

这里有一个邪恶的答案给你(你说得很快),它利用
eval
进行“解析”:

对不起,我的评估

我可能应该给出一个更有用的答案编辑:其他人刚刚做了。

提案:

s.gsub(/\\(\d{3})/) { $1.oct.chr }

这取决于你能对你的输入做出什么样的假设。

那么,你想把任何前导和尾随的单引号转换成双引号吗?还是将所有单引号改为双引号?是实际字符串的一部分?或者您正在尝试将单引号字符串转换为双引号字符串(它们都是相同的东西,除了双引号字符串允许更多类似插值的事情外)?不,引号不是字符串的一部分。如果你将两个字符串都粘贴到irb中,你就可以知道我需要什么。然后更清楚地说明你想对字符串执行什么类型的转换。你是在问如何将12个字符的字符串转换为3个字符的字符串,对吗?如果是这样的话,问得好!谢谢我不喜欢eval,但这是一个很好的简短解决方案。谢谢,这比eval解决方案更安全。
s.gsub(/\\(\d{3})/) { $1.oct.chr }