Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 如何在不添加额外换行符的情况下从用户接收数据_Ruby_Newline_Gets_Chomp - Fatal编程技术网

Ruby 如何在不添加额外换行符的情况下从用户接收数据

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: "

我正在尝试创建一个程序,按字母顺序排列用户的单词条目。然而,对用户条目的检查显示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 << 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"