如何在Ruby中拆分字符串?

bas*_*ibe 2 ruby regex string split

我有特殊的字符串name1="value1" name2='value2'.值可以包含空格,并由单引号或双引号分隔.名称永远不会包含空格.名称/值对由空格分隔.

我想将它们解析为这样的名称 - 值对列表

string.magic_split() => { "name1"=>"value1", "name2"=>"value2" }
Run Code Online (Sandbox Code Playgroud)

如果Ruby理解外观断言,我可以做到这一点

string.split(/[\'\"](?=\s)/).each do |element|
    element =~ /(\w+)=[\'\"](.*)[\'\"]/
    hash[$1] = $2
end
Run Code Online (Sandbox Code Playgroud)

但Ruby不理解外观断言,所以我有点卡住了.

但是,我确信无论如何都有更优雅的方法来解决这个问题,所以我转向你.你有解决这个问题的好主意吗?

ste*_*lag 6

这个失败的价值就像她说的"喜",但它可能已经足够了.

str = %q(name1="value1" name2='value 2')
p Hash[ *str.chop.split( /' |" |='|="/ ) ]
#=> {"name1"=>"value1", "name2"=>"value 2"}
Run Code Online (Sandbox Code Playgroud)