使用 Ruby,我想要求用户输入一个单词 5 倍,然后对列表进行排序并大写所有其他单词



是的,这是一个学习问题。我一直在用头撞墙。到目前为止我有什么...

words = []
5.times do
  puts "Please enter a word:"
  words << gets.chomp.upcase
end
puts "Here are your words:" 
puts words.sort

在 6:00 开始此视频更多信息: https://vimeo.com/125941774

words = []
5.times do
  puts "Please enter a word:"
  words << gets.chomp   # no .upcase here, upcase converts all letters
end
result = words.sort.map.with_index do |w, i| 
           w[0] = w[0].upcase if i.odd?
         end
puts "Here are your words:" 
puts result

写和大写不是同义词

大写

和大写是两回事。由于您的问题涉及大写(例如标题大小写),因此您可以围绕以下示例构建代码。

一个示例使用最新MRI Ruby的功能,而另一个示例使用Rails的ActiveSupport。通过索引到字符串中可以实现更复杂的解决方案,但为什么要这样做呢?

红宝石 2.3.0+

使用新的字符串#大写方法。例如:

words = %w[foo bar baz quux wibble]
words.each_with_index.map { |word, idx| idx.even? ? word.capitalize : word }
#=> ["Foo", "bar", "Baz", "quux", "Wibble"]

这将大写列表中的其他单词。使用整数#奇数?而不是整数#偶数?以检查 IDX 变量(如果您愿意)。

使用导轨扩展

如果你有一个较旧的Ruby,你可以使用facets gem中的方法或Rails的"变形"字符串扩展来做同样的事情。例如,使用主动支持:

require 'active_support/core_ext/string/inflections'
words = %w[foo bar baz quux wibble]
words.each_with_index.map { |word, idx| idx.even? ? word.titlecase : word }
#=> ["Foo", "bar", "Baz", "quux", "Wibble"]

最新更新