Как я делаю Сравнение строк в Ruby? [дубликат]

7
задан the Tin Man 29 November 2010 в 22:27
поделиться

5 ответов

Строка, возвращаемая получателями, будет иметь в конце строку. Для ее удаления используйте String#chomp (т.е. state_abbreviation = get.chomp).

PS: Ваш код выглядел бы намного чище (IMHO), если бы вы использовали регистр, когда вместо if-elsif-elsif.

28
ответ дан 6 December 2019 в 04:51
поделиться

Мне не хватает очков, чтобы прокомментировать, но я думаю, что идея Криса Джестера-Янга с гашишем очень аккуратная.

statehash = { "RI" => "Rhode Island", "NC" => "North Carolina" }

print "Enter your state abbreviation: "
state_abbreviation = gets.chomp.upcase

puts statehash[state_abbreviation]

этот код намного лаконичнее и понятнее, чем кучка эльсифов, и короче, чем кейс. Он также позволяет создавать хэш объектов состояния, где ключом является аббревиатура, а значением - объект.

16
ответ дан 6 December 2019 в 04:51
поделиться

Перед большим блоком, скажем:

state_abbreviation.chomp!

В качестве альтернативы отличному предложению sepp2k использовать case , рассмотрим возможность создания хэша с сокращениями состояния в качестве ключей.

5
ответ дан 6 December 2019 в 04:51
поделиться

получает возвращает то, что вы набрали новой строкой. Попробуйте state_abbreviation = get.chomp

0
ответ дан 6 December 2019 в 04:51
поделиться

Вы используете get, и, вероятно, ваш shell/input добавляет символ новой строки (\n) в конец строки, и, возможно, вы захотите использовать оператор регистра:

пример:

print("Enter your state abbreviation: ") 
state_abbreviation = gets.strip

case state_abbreviation
  when "NC" then puts("North Carolina")
  when "SC" then puts("South Carolina")
  # ...
  else puts("You have enter wrong abbreviation")
end
0
ответ дан 6 December 2019 в 04:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: