地图和扫描阵列

时间:2012-06-03 03:26:44

标签: ruby

我想列出数组中包含给定关键字的所有字符串。

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”。如何使用整个原始字符串创建一个新数组?

3 个答案:

答案 0 :(得分:3)

如果您尝试查找匹配的字符串,那么您使用了错误的方法,您需要select

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

select方法:

  

返回一个数组,其中包含不为false的 enum 的所有元素。

答案 1 :(得分:3)

array_name.grep /\bcalifornia\b/i
# => ["this is california", "welcome to california"]

答案 2 :(得分:0)

a = array_name.select{|b| b.match /\b(california)\b/i)}