是的,这是一个学习问题。我一直在用头撞墙。到目前为止我有什么...
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"]