4

私はこの文字列を持っています:

a = "hy what are you doing [Zoho Reports] will you like? [Zoho Books] reply"

結果が次のようになるように分割したいと思います。

hy
what
are
you
doing
[Zoho Reports]
will
you
like?
[Zoho Books]
reply

これらの結果を達成するために、どのようにその文字列をループできますか?私は現在これを行っています:

a.split("")

しかし、それはとに分割され"[Zoho Reports]"ます。これは私が望んでいないことです。"[Zoho""Reports]"

4

2 に答える 2

6

この場合、捨てたいものよりも欲しいものを特徴づける方が簡単なので、scan代わりにを使用する必要があります。split

Bozhidarの答えに似ていますが、複雑さは必要ありません。

a.scan(/\[.*?\]|\S+/)
于 2012-10-07T18:35:05.760 に答える
4

あまりきれいではありませんが、仕事は終わります:

a.scan(/(\S+)|(\[.+?\])/).map(&:compact).flatten

後で、私が使用したグループはまったく必要ないことに気付きました。それらがなければ、ソリューションは次のように簡略化できます。

a.scan(/\S+|\[.+?\]/)
于 2012-10-07T18:26:30.233 に答える