我该如何拆分这个字符串?

时间:2012-10-07 18:06:07

标签: ruby

我有这个字符串:

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]",这是我不想要的。

2 个答案:

答案 0 :(得分:6)

在这种情况下,您应该使用scan而不是split,因为它更容易表征您想要的内容而不是您想要丢弃的内容。

与Bozhidar的答案类似,但你不需要复杂化。

a.scan(/\[.*?\]|\S+/)

答案 1 :(得分:4)

不是很漂亮,但是完成了工作:

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

后来我注意到我使用的组根本没有必要,如果没有它们,解决方案可以简化为:

a.scan(/\S+|\[.+?\]/)