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"and "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 回答