2012-10-07 82 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