在 Ruby 中将逗号分隔的字符串转换为哈希表

3
在 Ruby 中,我需要将一个像这样的字符串转换为:
"keyA,valueA,keyB,valueB"

将其转换为如下哈希表:
{"keyA"=>"valueA", "keyB"=>"valueB"}

我相信这将涉及到each_slice方法和可能使用枚举的inject(),正如在"ruby string to hash conversion"中所描述的那样。但我不知道如何将这些组件结合起来。
2个回答

12
s = 'keyA,valueA,keyB,valueB'

Hash[*s.split(',')]
#=> { 'keyA' => 'valueA', 'keyB' => 'valueB' }

这是正确的做法...跟随潮流,保持禅意。 - the Tin Man
哇,这太棒了。这在文档中显而易见吗?谢谢Jorg。 - Steve M
2
很棒的解决方案@Jorg。但我想了解一下运算符。这个运算符的作用是什么?因为我在没有*运算符的情况下运行代码,输出为空哈希,就像{}一样。谢谢。 - monsur

1

试试这个:

s = "keyA,valueA,keyB,valueB"
Hash[*s.split(",").each_slice(2).collect{ |k,v| [k,v] }.flatten]

2
返回翻译的文本:Hash["keyA,valueA,keyB,valueB".split(',').each_slice(2).to_a]。 - Michael Kohl
1
如果你想要collect,可以去掉splatflatten的噪音:Hash[s.split(",").each_slice(2).collect{ |k,v| [k,v] }] - mu is too short

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接