你可以将这段代码从Python简化为Ruby吗?可以说我有这个数据
data = ['hello', 'person', ';hello', 'otherperson']
print([x.split("@") for x in "@".join(data).split(";")])
当我打印它时会打印出来:
[['hello', 'person', ''], ['hello', 'otherperson']]
Ruby中有这样的东西吗?如果它可以在一行中完成,我宁愿这样做,但我只是知道它是怎么回事。
答案 0 :(得分:1)
字面翻译,
data.join(?@).split(?;).map { |x| x.split(?@) }
但你可能完全想要一种不同的方法。如果任何字符串包含@
,那么这将是错误的。
答案 1 :(得分:1)
这适用于预期输出,但请注意它会修改原始字符串,因此理想情况下data
是一个深度克隆(或者不是改变包含字符串的问题):
data.slice_before { |s| s.gsub!(/^;/,'') }.to_a
=> [["hello", "person"], ["hello", "otherperson"]]