2016-11-28 37 views
0

阵列选择我有一个数组,看起来像这样:从给定的子价值

arr = ["value1", "value2 spot", "value3", "value4", "value5 spot", "value6"] 

,我想选择与哪些有spot子所有的值返回数组。

arr.select{|v| v == regex_here} 

我该如何做到这一点?

+0

如何:'* \ bspot \ B *' – Toto

+0

。 'a,b = arr.partition {| s | s [/ spot /]}'然后'a'返回真值,'b'返回假值。 –

回答

3

你可以使用你做

arr.group_by { |item| item.match(/spot/) != nil } 
=> {false=>["value1", "value3", "value4", "value6"], true=>["value2 spot", "value5 spot"]} 
+0

谢谢,这个作品很棒!你还可以协助获得所有*不具有子字符点的值。 – supersize

+0

我更新了我的答案 – Ursus

+1

也尝试'分区'。 –

0

grep方法

arr.grep(/spot/) 
    => ["value2 spot", "value5 spot"] 

其他请求您可以使用

arr.select{ |i| i[/spot/] } 
=> ["value2 spot", "value5 spot"] 
+0

“应该”在这里是错误的词 - 最合适的解决方案是使用'grep'。 – mudasobwa

+0

@mudasobwa好的很酷 –