我有这个字符串:
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]"
,这是我不想要的。
答案 0 :(得分:6)
在这种情况下,您应该使用scan
而不是split
,因为它更容易表征您想要的内容而不是您想要丢弃的内容。
与Bozhidar的答案类似,但你不需要复杂化。
a.scan(/\[.*?\]|\S+/)
答案 1 :(得分:4)
不是很漂亮,但是完成了工作:
a.scan(/(\S+)|(\[.+?\])/).map(&:compact).flatten
后来我注意到我使用的组根本没有必要,如果没有它们,解决方案可以简化为:
a.scan(/\S+|\[.+?\]/)