Попытка поиска строки для входных данных в рубине - PullRequest
2 голосов
/ 17 октября 2011

У меня проблемы с поиском ввода строки пользователем с использованием gets. Вот схема:

puts "What are we searching for?"
search = gets
z=1
result = []
file = File.open('somefile.txt', 'r+')

file.each do |line| 
  if line.include?(search)
    result << z
  end
  puts line
  z+=1
end

puts "Found on line(s) #{result}

Кажется, проблема в if line.include?(search). Когда я заменяю (search) на значение, которое я ищу - например, ("example01") - этот скрипт работает нормально. Но при использовании значения, введенного пользователем - с использованием gets, оно никогда не находит его. ("#{search}") тоже не работает.

Я также пытался использовать регулярные выражения, меняя местами

if line.include?(search)

с

if line =~ Regexp.new(search)

с той же проблемой.

Что здесь происходит? Заранее спасибо.

1 Ответ

4 голосов
/ 17 октября 2011

Попробуйте:

search = gets.chomp

Ваша текущая реализация также сохраняет возврат строки, который вы добавляете из ввода.Chomp избавится от \ n или \ r.

...