2010-10-14 12 views
37

Decir que tengo una matriz de cadenas¿Cómo buscar una matriz en Ruby?

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

¿Cómo voy a buscar esta matriz al igual que lo haría un registro de objeto activo en los carriles. Por ejemplo, la consulta "sa" devolvería ['sandra', 'sam', 'sabrina'].

Gracias!

+0

en caso de que se preguntan acerca de tales cosas en el futuro, echa un vistazo a la API de rubí: http://ruby-doc.org/core/ – brad

+0

gracias. va a hacer – Tim

Respuesta

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

funciona perfectamente, gracias! – Tim

+16

Uh ... si eso es una matriz en memoria, entonces lo anterior no produce _any_ hits sql. – Andrew

+0

Por ej. Si tengo que buscar el nombre completo 'sabrina', entonces en lugar de ponerle un bucle a cada nombre, regex o grep darán algún rendimiento? – kamal

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

Una combinación de select método y expresiones regulares funcionaría

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

Ésta busca prefijos, pero puede ser cambiado a subseries o cualquier otra cosa.

Cuestiones relacionadas