2015-11-08 4 views
1

Я просто собираю Ruby. Я пытаюсь сравнить две строки в операторе If так:Ruby: Сравнение ввода пользователя со строкой

#get user input 
input = gets #type in 'a' 

#compare 
if input == "a" 
    puts "a!" 
end 

Это ничего не выводит, когда я типа в «а».

Я пробовал тройной '===', input.eql ?, input.equal? - нет выхода

Если я использую космический корабль, '< =>', он работает независимо от входа, равного 'a'.

Как сравнить строки?

Спасибо!

+0

Ultimatel y да, но когда я googled специфически «согласование ввода пользователя к строке», я не увидел немедленного ответа. Может быть, этот обмен поможет в этом конкретном ловушке? – ZAR

ответ

4

Вероятно, имеет новую строку:

Вы можете использовать: input.chomp.eql? 'a'

Надеюсь, это поможет!

+1

Мы получили его в одно и то же время! Все хорошо, я дам вам кредит. Спасибо чувак – ZAR

1

автоматически добавляет на вход новую строку.

нам нужно переключить это

input = gets.chomp 

, который будет поставлять значение без новой линии ..

2

Как было указано выше, используйте input = gets.chomp

.chomp автоматически сделает новую строку после gets для примера:

input = gets #type Ruby 

if input == "Ruby" 
    puts "I love Ruby!" 
else 
    puts "Invalid input" 
end 

В этом примере выход будет #=> "I love Ruby\n"

Теперь, если вы используете .chomp:

input = gets.chomp #type Ruby 

if input == "Ruby" 
    puts "I love Ruby!" 
else 
    puts "Invalid input" 
end 

Выход для этого будет таким же, как и выше без \n

Также в Ruby, вы можете использовать if input =~ /a/i это приведет к тому, что все, что включает в себя a, будет работать, другими словами, вы можете ввести a, A и выход будет таким же.

Смежные вопросы