2012-10-07 50 views
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]",我不想要的。

+0

你的方法有什么问题? – megas

+0

@megas拆分字符串在什么样的基础上取得成果? – Kashiftufail

+0

因为在空间的基础上拆分我如何能够存档“[Zoho Reports]”作为一个单词 – Kashiftufail

回答

4

不是很漂亮,但能够完成任务:

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

后来我注意到,我使用的组是没有必要的,没有他们的解决方案可以简化为:

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

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

与Bozhidar的回答类似,但不需要复杂。

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

嗯,你的正则表达式缺少一个关闭的'/',即使它看起来不太正确。 –

+0

错位的斜线是因为我编辑了它,而且我认为在编辑之前尝试了它。看到变化。我改变了选择的顺序。 – sawa