2010-10-14 73 views
37

Nói rằng tôi có một mảng các chuỗiCách tìm kiếm một mảng trong Ruby?

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

Làm thế nào tôi sẽ tìm kiếm mảng này giống như tôi sẽ là một đối tượng ghi lại hoạt động trong Rails. Ví dụ: truy vấn "sa" sẽ trả lại ['sandra', 'sam', 'sabrina'].

Cảm ơn!

+0

trong trường hợp bạn tự hỏi về những điều như vậy trong tương lai, hãy kiểm tra các api ruby: http://ruby-doc.org/core/ – brad

+0

nhờ. sẽ làm – Tim

Trả lời

59
arr.grep(/^sa/) 
+0

hoạt động hoàn hảo, cảm ơn! – Tim

+16

Uh ... nếu đó là một mảng trong bộ nhớ, thì ở trên không tạo ra các lần truy cập _any_ sql. – Andrew

+0

Ví dụ: Nếu tôi phải tìm kiếm toàn bộ tên 'sabrina', thì thay vào đó lặp lại mỗi tên, regex hoặc grep sẽ cho một số hiệu suất? – kamal

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

Sự kết hợp giữa phương pháp select và regex sẽ làm việc

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

Cái này tìm kiếm các tiền tố, nhưng nó có thể được thay đổi để chuỗi con hoặc bất cứ điều gì khác.

Các vấn đề liên quan