搜索包含名称字符串的数组,返回长度为X的名称

时间:2016-05-08 18:30:59

标签: ruby

给定数组["Jim Bob", "Jim","Billy Bob"]

如何返回长度为X的所有名称的数组。

所以,如果我在数组中搜索长度为2的名字,我应该返回:["Jim Bob", "Billy Bob"]

希望在Ruby中做到这一点。

2 个答案:

答案 0 :(得分:1)

好像你没有搜索长度为2的名字,而是由2个名字组成。

按名称部分的数量选择:

["Jim Bob", "Jim", "Billy Bob"].select { |names| names.split.length == 2 }
#=> ["Jim Bob", "Billy Bob"]

按名称中的空格数选择:

["Jim Bob", "Jim", "Billy Bob"].select { |name| name.count(' ') == 1 }
#=> ["Jim Bob", "Billy Bob"]

答案 1 :(得分:0)

根据您想要处理带连字符的名称的方式,您可能需要:

arr = ["Jim Bob", "Jim", "Billy Bob", "Anna-Marie"]

arr.select { |names| names.scan(/[\w-]+/).size == 2 }
  #=> ["Jim Bob", "Billy Bob"]