【发布时间】:2013-04-14 07:32:31
【问题描述】:
我正在尝试为编程作业创建一个标题化方法,它将某些单词大写而忽略其他单词。它总是将第一个单词大写。为此,我做了一个查找字符串第一个单词的方法,并尝试在 titleize 方法中调用它。我收到一条错误消息,上面写着“警告:条件中的字符串文字”。我试过改变 if 循环的措辞,但这并没有解决我的错误。谁能向我解释为什么我的代码被破坏了?非常感谢您的帮助!
def first_word(str)
array = str.split(' ')
return array[0]
end
def titleize(str)
words = str.split
words.each do |word|
if word != first_word(str)
word.capitalize!
elsif word != 'and' or 'the'
word.capitalize!
end
words.join ' '
end
end
【问题讨论】:
-
顺便说一句:您的代码效率低下。考虑一个包含很多单词的非常长的字符串——拆分它会消耗时间和内存。在
words.each循环的每个循环中,您调用first_word(),它再次拆分整个字符串。最好使用first_word = words.first,并在循环中使用first_word变量。 -
您的代码错误地将与首字母相同的非首字母大写。
-
@sawa 你是对的!
标签: ruby capitalize