1

このコードを Python から Ruby に単純化できますか? このデータがあるとしましょう

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

印刷すると、次のように印刷されます。

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

Rubyでこんなのありますか?1行で実現できればいいのですが、それがどのようになっているのかを知りたいだけです。

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 に答える