#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, я не знаю, что это такое. Спасибо, Касым.