Ruby 如何在不添加额外换行符的情况下从用户接收数据
我正在尝试创建一个程序,按字母顺序排列用户的单词条目。然而,对用户条目的检查显示ruby出于某种原因在每个单词中添加了一个换行符。例如,如果我输入Dog、Cat、Rabbit,程序将返回[“Cat\n”、“Dog\n”、“Rabbit\n”]如何防止这种情况发生Ruby 如何在不添加额外换行符的情况下从用户接收数据,ruby,newline,gets,chomp,Ruby,Newline,Gets,Chomp,我正在尝试创建一个程序,按字母顺序排列用户的单词条目。然而,对用户条目的检查显示ruby出于某种原因在每个单词中添加了一个换行符。例如,如果我输入Dog、Cat、Rabbit,程序将返回[“Cat\n”、“Dog\n”、“Rabbit\n”]如何防止这种情况发生 words = [] puts "Enter a word: " until (word = gets).to_s.chomp.empty? puts "Enter a word: "
words = []
puts "Enter a word: "
until (word = gets).to_s.chomp.empty?
puts "Enter a word: "
words << word
end
puts words.sort.inspect
words=[]
输入“输入一个单词:”
直到(word=gets)。到_.s.chomp.empty?
输入“输入一个单词:”
words将代码更改为:
until (word = gets.chomp).empty?
您现在的做法是:
(word = gets).to_s.chomp.empty?
从键盘输入中获取字符串,但在用户按回车键(在Windows上添加新行或回车+新行)之前,字符串不会返回到代码中
to_s
是不必要的,因为您已经从键盘获取了字符串形式的值
chomp
需要绑定到gets
,如果希望所有输入都没有尾随的新行或新行/回车符。在测试empty?
Ruby 2.4有一个解决方案:
input = gets(chomp: true)
# "abc"