ruby - 如何忽略大小写按字母顺序排列数组?

标签 ruby alphabetical-sort

我正在使用 Chris Pine 的《学习编程》,但我被他相对简单的挑战难倒了,即以随机单词列表的形式获取用户输入,然后将它们按字母顺序排列在数组中。关于这个挑战的问题之前已经出现过,但我无法在 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 不允许将字符串转换为数组。

最佳答案

怎么样:

wordlist.sort_by { |word| word.downcase }

或者更短:

wordlist.sort_by(&:downcase)

关于ruby - 如何忽略大小写按字母顺序排列数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17799871/

相关文章:

ruby - 为什么 Gem 可以安装 gems debase 和 ruby​​-debug-ide 而 Bundler 却不能?

c - 按字母顺序排序 c 中的列表

excel - 按部分文本的字母顺序对相似文本列进行排序,而不是第一个不同的字母。使用 Excel 根据另一个列对列进行排序

css - 如何在 Wordpress 中按字母顺序排列所选内容

html - 如何在不使用 Nokogiri 的情况下替换 ruby​​ 中的 html 标签?

javascript - 如何将复选框列表的选定项绑定(bind)到 Ruby on Rails 中下拉列表中的选定项?

c - 在 C 中按字母顺序对一长串单词进行排序的最佳方法是什么?

PHP:使用 usort 或从 UTF-8 字符串排序字母会导致未知字符

ruby - 如何从ansible脚本调用capistrano

Ruby 类类型和 case 语句