2012-06-03 162 views
0

我想列出數組中包含給定關鍵字的所有字符串。映射和掃描陣列

array_name = ["this is california", "hawaii", "washington", "welcome to california"] 

a = array_name.map { |s| s.scan(/\b(california)\b/i) }.flatten 

# => ["california", "california"] 

上面將創建一個新的字符串數組,其中每個字符串都是「california」。如何用整個原始字符串創建一個新數組?

+0

,如果你在你的問題中添加的Ruby在標題或其他地方你可能會得到更多的關注。我只是說,因爲起初你使用的語言對我來說並不明顯。 –

+2

@AlexW:它被標記爲「紅寶石」... –

+0

我意識到這一點。我只是指出,如果Ruby在標題或者問題的正文中會得到Ruby專家的更多關注。 –

回答

3

您使用了錯誤的方法,如果你想找到匹配的字符串,你想select

array_name.select { |s| s.match(/\bcalifornia\b/i) } 
# ["this is california", "welcome to california"] 

select方法:

返回一個包含所有元素的數組枚舉其中不是錯誤的。

+1

畝太快;) –

0
a = array_name.select{|b| b.match /\b(california)\b/i)} 
3
array_name.grep /\bcalifornia\b/i 
# => ["this is california", "welcome to california"]