Un ejemplo.
class Persona
attr_accessor :nombre, :apellidos, :direccion
def initialize(nombre, apellidos, direccion)
self.nombre = nombre
self.apellidos = apellidos
self.direccion = direccion
end
def =~(re)
"#{self.nombre} #{self.apellidos} #{self.direccion}" =~ re
end
def self.search(ciudad, input)
query = Regexp.new(input, 'i')
ciudad.select{|p| p =~ query}
end
end
p1 = Persona.new('Jose', 'Gonzalez', 'Sol')
p2 = Persona.new('Francisco', 'Martinez', 'Preciados')
p3 = Persona.new('Fernando', 'Solano', 'Serrano')
Madrid = [p1, p2, p3]
puts Persona.search(Madrid, 'sol').map(&:nombre)
El modificador 'i' del constructor de expresiones regulares hace que no distinga entre mayúsculas y minúsculas.
Concatenando los campos en los que queremos buscar se obtiene un matching más completo.
Con el map final se imprimen los nombres de las personas que hayan coincidido con la búsqueda.
0 comentarios:
Publicar un comentario