1

你能把这段代码从 Python 简化成 Ruby 吗?假设我有这些数据

data = ['hello', 'person', ';hello', 'otherperson']
print([x.split("@") for x in "@".join(data).split(";")])

当我打印它时,它会打印:

[['hello', 'person', ''], ['hello', 'otherperson']]

Ruby中有这样的东西吗?如果它可以在一行中完成,我更愿意这样做,但我只是知道它是怎么回事。

4

2 回答 2

1

这适用于预期的输出,但请注意它会修改原始字符串,因此理想情况下data是深度克隆(否则更改包含的字符串不是问题):

data.slice_before { |s| s.gsub!(/^;/,'') }.to_a
 => [["hello", "person"], ["hello", "otherperson"]]
于 2013-09-20T16:33:57.350 回答
1

直译过来,

data.join(?@).split(?;).map { |x| x.split(?@) }

但是您可能想要完全不同的方法。如果任何字符串包含@.

于 2013-09-20T16:24:49.070 回答