Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 标题大写_Ruby - Fatal编程技术网

Ruby 标题大写

Ruby 标题大写,ruby,Ruby,我正在尝试写一个将标题大写的方法。它不应该大写每个单词,如果你愿意的话,只应该大写大词。有时,它必须大写每个单词。也许我需要为这些小词添加一个例外。这是Ruby教程的一部分,我不能使用Railstitleize方法。这是我到目前为止所拥有的。如果你能帮忙,请告诉我 def titleize(name) name.split(" ").each {|word| word.capitalize!}.join (" ") end 乔什·沃格茨的评论: def titleize(name) l

我正在尝试写一个将标题大写的方法。它不应该大写每个单词,如果你愿意的话,只应该大写大词。有时,它必须大写每个单词。也许我需要为这些小词添加一个例外。这是Ruby教程的一部分,我不能使用Rails
titleize
方法。这是我到目前为止所拥有的。如果你能帮忙,请告诉我

def titleize(name)
  name.split(" ").each {|word| word.capitalize!}.join (" ")
end

乔什·沃格茨的评论:

def titleize(name)
  lowercase_words = %w{a an the and but or for nor of}
  name.split.each_with_index.map{|x, index| lowercase_words.include?(x) && index > 0 ? x : x.capitalize }.join(" ")
end

您可能希望将小写字母设为常量,并将其移出函数,因为它们永远不会改变。

这是一个非常复杂的问题,@johnnycakes answer是一个很好的开始,但小写字母列表并不详尽。任何4个或更少字母的介词都不应大写,例如over、into、on、as等。此外,标题的最后一个单词除了第一个单词外,还应始终大写

维基百科有一个独特的功能。然而,有些词既可以是介词,也可以是动词,这一事实使这一点更加复杂,因此“我喜欢你”将大写“喜欢”,而“喜欢弗林”则不会大写


Rails的titleize方法似乎将每个单词都大写,而在遵循实际的样式指导原则方面做得稍微好一些,尽管仍然没有解决介词问题。

您正在学习教程,不能使用
titleize
,但我们可以帮您吗?你能不能用一些你期望的输入和输出的例子来详细说明你的问题?我知道我应该自己完成,但我已经没有什么想法了。输出的一个例子是“战争与和平”变成“战争与和平”,或者“酷博士的神秘冒险”变成了酷博士的神秘冒险“。我正在使用.include构造if/else语句?方法来检查字符串中的小词,但语法有点问题。有什么建议吗?你也可以排除某些词,例如:a,an,the,and,but,or,for,nor…谢谢johnnycakes的帮助。我尝试了您所建议的方法,如果我将块中的.titleize方法替换为.capitalize,那么对于一些测试来说是有效的。不过,似乎还是不知道该如何排除那些小写字母大写。还有指针吗?还是说这件事让我有点不知所措?提前谢谢,修好了。我应该考得更好。首先,是的,我需要使用
大写
而不是
标题
。其次,我的小写单词列表必须用空格(而不是逗号)分隔。