Попытка поиска строки для ввода gets в ruby

#ruby #regex #include #gets

#ruby #регулярное выражение #включить #получает

Вопрос:

У меня возникают проблемы с поиском строки, вводимой пользователем с помощью 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") , этот скрипт работает нормально. Но при использовании значения, введенного пользователем -using gets , кажется, что оно никогда не находит его. ("#{search}") тоже не работает.

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

 if line.include?(search)
  

с

 if line =~ Regexp.new(search)
  

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

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

Ответ №1:

Попробуйте :

 search = gets.chomp
  

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

Комментарии:

1. Это очень распространенная ошибка Ruby. Настолько распространено, что я не понимаю, почему нет a getstring , который делает это автоматически…

2. Ну, если это не было лакмусовой бумажкой ruby, я не знаю, что это такое. Спасибо, Касым.