From: seanh1313@... Date: 2011-04-02T05:33:54+09:00 Subject: Re: Searching a CSV file - beginner seeking help Here you go. This is VERY rough, but it should get you headed in the right direction ################# # search_films.rb ################# require 'csv' def load_xvid_file(path_to_csv) @names = [] csv_contents = CSV.read(path_to_csv) csv_contents.shift csv_contents.each do |row| @names << row[0] end @names.each { |f| f.downcase! } #puts @names end def search_for_film @tick = 0 #puts @names print "Enter name of film to search for: " $film = gets.chomp.downcase puts @names.each do |$check| puts $check , @tick if (/#{$film}(.*)|(.*)#{$film}/i =~ $check) @tick = 1 #puts "TEST" end end if(@tick == 1) puts "#{$film} found!" else puts "#{$film} not found :(" end prompt end def prompt print "Search again? (y or n) " answer = gets.chomp.downcase case answer when /y/ search_for_film when /n/ puts "Goodbye." exit else prompt end end load_xvid_file("movie.csv") search_for_film ---- Simon Harrison wrote: > Hi all. I've written a little script to search a csv file for films. It > works but has problems. I'd appreciate any pointers with the following: > > 1. I've used instance variables without a class, to make them visible > amongst methods. Is this acceptable for a short script like this? > > 2. As it is, it will only match exactly. For example, I have The Mummy > and The Mummy Returns. If I search for 'mummy' program reports "film not > found." I know I need to use Regexp's, not sure how to implement it here > though. > > 3. Any other comments gratefully received. > > > ################# > # search_films.rb > ################# > > require 'csv' > > def load_xvid_file(path_to_csv) > @names = [] > csv_contents = CSV.read(path_to_csv) > csv_contents.shift > csv_contents.each do |row| > @names << row[0] > end > @names.each { |f| f.downcase! } > end > > def search_for_film > print "Enter name of film to search for: " > film = gets.chomp.downcase > puts > > if @names.include?(film) > puts "#{film} found!" > else > puts "#{film} not found :(" > end > prompt > end > > def prompt > print "Search again? (y or n) " > answer = gets.chomp.downcase > > case answer > when /y/ > search_for_film > when /n/ > puts "Goodbye." > exit > else > prompt > end > end > > load_xvid_file("/home/simon/Documents/CSV/XviD.csv") > search_for_film > > -- > Posted via http://www.ruby-forum.com/. >