如何在Ruby中搜索数组?

46

假设我有一个字符串数组

arr = ['sandra', 'sam', 'sabrina', 'scott', 'mark', 'melvin']

我应该如何搜索这个数组,就像在Rails中搜索一个Active Record对象一样。例如,查询“sa”将返回['sandra','sam','sabrina']

谢谢!


如果你将来有类似的疑问,可以查看 Ruby API:http://ruby-doc.org/core/ - brad
4个回答

67
arr.grep(/^sa/)

16
如果那是一个内存数组,那么上述代码就不会发出 任何 SQL 查询请求。 - Andrew
如果我要搜索整个名称sabrina,那么使用正则表达式或grep会比循环每个名称更有效率? - kamal

31
>> arr.select {|s| s.include? 'sa'}
=> ["sandra", "sam", "sabrina"]

14

可以结合使用select方法和正则表达式来实现

arr.select {|a| a.match(/^sa/)}

这个代码寻找前缀,但可以更改为子字符串或其他任何内容。


2
a.select{|x|x[/^sa/]}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接