52

私は Chris Pine の Learn to Program を使用していますが、ランダムな単語のリストの形式でユーザー入力を取得し、それらを配列にアルファベット順に並べるという比較的単純な課題に困惑しています。このチャレンジに関する質問は以前にもありましたが、SO に関する特定の質問を見つけることができなかったので、重複していたら申し訳ありません。

puts "Here's a fun trick. Type as many words as you want (one per line) and 
I'll sort them in...ALPHABETICAL ORDER! Hold on to your hats!"
wordlist = Array.new
while (userInput = gets.chomp) != ''
   wordlist.push(userInput)
end
puts wordlist.sort

これでうまくいきますが、大文字と小文字を区別せずに配列をアルファベット順に並べ替える方法を見つけようとしています。これは私の頭を包むのが難しいです。私はそれについて学びましcasecmpたが、それは文字列の配列ではなく、特定の文字列を比較する方法のようです。

これまでのところ、次のようなことを試してきました。

wordlist.to_s.downcase.to_a.sort!

これは見栄えが悪いだけでなく、Ruby 2.0 では文字列を配列に変換できないなど、複数の理由で機能しません。

4

3 に答える 3

114

どうですか:

wordlist.sort_by { |word| word.downcase }

またはさらに短い:

wordlist.sort_by(&:downcase)
于 2013-07-23T01:10:37.153 に答える
0

Ruby コーディングのブートキャンプでも同じ質問がありました。これが私のために働いたものです:

puts "Type in a sentence."
sentence = gets.chomp.downcase
puts sentence.split(" ").sort
于 2016-10-11T17:45:35.267 に答える