0

ユーザーの単語エントリをアルファベット順に並べ替えるプログラムを作成しようとしています。しかし、users エントリを調べると、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
4

2 に答える 2

2

コードを次のように変更します。

until (word = gets.chomp).empty?

あなたが今やっている方法:

(word = gets).to_s.chomp.empty?

getsReturnキーボード入力からの文字列ですが、ユーザーが を押して改行、または Windows のキャリッジ リターン + 改行を追加するまで、コードに返されません。

to_s既にキーボードから値を文字列として取得しているため、必要ありません。

chompgets末尾の改行または改行/改行がないすべての入力が必要な場合は、に関連付ける必要があります。をテストするとき、それはうまくいきますempty?

于 2013-02-03T21:42:13.177 に答える
0

Ruby 2.4 には、これに対する解決策があります。

input = gets(chomp: true)
# "abc"
于 2016-12-08T16:49:02.190 に答える