我正在尝试编写一个添加输入单词数组的程序。用户完成输入数组中的最后一个元素后,将显示单词,其他每个单词都显示在所有大写字母中。换句话说,应该全是小写字母。有没有办法按字母顺序显示单词?这是我到目前为止所做的。
userWords = []
6.times do
puts "Please enter a word:"
userWords << gets.chomp
end
userWords.each do |word|
puts word
end
答案 0 :(得分:3)
wordlist.sort_by{|word| word.downcase}
wordlist.each_with_index {|val, index|
if index.even?
puts val.upcase
else
puts val.downcase
end
}
答案 1 :(得分:1)
words = %w{ It was the best of times, it was the worst of times }
#=> ["It", "was", "the", "best", "of", "times,", "it", "was",
# "the", "worst", "of", "times"]
enum = [:upcase, :downcase].cycle
#=> #<Enumerator: [:upcase, :downcase]:cycle>
words.sort_by(&:downcase).each { |w| puts w.send(enum.next) }
BEST
it
IT
of
OF
the
THE
times
TIMES,
was
WAS
worst
答案 2 :(得分:-1)
上面的解决方案应该有效,但如果没有(我怀疑),你也可以试试这个类似的解决方案:
像你一样抓住用户输入后......
user_words.sort.each_with_index { |word, index| index.even? ? puts word.upcase : puts word.downcase }
它做同样的事情,意味着它从第一个单词大写开始,然后是小写交替。
现在,如果您真的希望在以后修改数组并在以后重新使用它,您还可以执行以下操作:
new_array = user_words.sort.map.with_index(0) do |word, index|
word.upcase if index.even?
word.downcase if index.odd?
end
puts new_array
PS:请注意:ruby中的约定是对于使用underscore_case的变量和方法,对于使用CamelCase的类