我正在编写一个方法将字符串和整数数组合成一个句子。它必须大写第一个字母,在单词之间添加空格,并在句末加上句号。这是我写它的方式:
def sentence_maker(y)
y[0].capitalize!
y[-1]="#{y[-1]}."
sentence = y.join(" ")
end
这是一个可以传递的数组示例:
["alaska", "has", "over", 586, "thousand", "miles"]
这种方法的重构是什么? 在此先感谢您的帮助。 Ruby 2.1.1p76
答案 0 :(得分:2)
为什么不呢?:
words = ["alaska", "has", "over", 586, "thousand", "miles"]
words.join(' ').strip.capitalize << '.' #=> "Alaska has over 586 thousand miles."
或使用字符串插值:
"#{words.join(' ').strip.capitalize}." #=> "Alaska has over 586 thousand miles."
strip
将删除字符串中的前导/尾随空格(如果数组的第一个或最后一个值中有任何值)。
UPDATE :您可以将其包装为数组的实例方法:
class Array
def to_sentence
"#{join(' ').strip.capitalize}."
end
end
words = ["alaska", "has", "over", 586, "thousand", "miles"]
words.to_sentence # => "Alaska has over 586 thousand miles."
答案 1 :(得分:1)
您可以使您的代码更具可读性:
def sentence_maker(array)
array.first.capitalize!
array.last.concat('.')
array.join(' ')
end