我正在尝试。大写所有字符串输入,不包括诸如“Of”,“The”或“And”之类的小字。
我无法弄清楚代码无法正常工作的原因。
def titleize(x)
capitalized = x.split.each do |i|
if i.length >= 2
if i == "of" || "the" || "and"
next
else
i.capitalize!
end
else
next
end
end
capitalized.join(' ')
end
这是我的Rspec输出:
故障:
1) Simon says titleize capitalizes a word
Failure/Error: expect(titleize("jaws")).to eq("Jaws")
expected: "Jaws"
got: "jaws"
(compared using ==)
答案 0 :(得分:1)
您在{
}中收到string literal in condition
警告
if i == "of" || "the" || "and"
您尝试将i
与of
或the
或and
进行比较,但在第一次尝试后,您没有传递左值进行比较,试试:
if i == "of" || i == "the" || i == "and"
更惯用的Ruby就是使用include?
if ['of', 'the', 'and'].include?(i)
这样至少可以获得Jaws
原因是因为你的实际方法对字符串war and peace
不起作用是因为如果传递的单词的长度小于或等于2,那么它将执行next
,因此,它只会将单词peace
大写。