首页 > 解决方案 > 如何比较来自两个不同数组的元素?红宝石

问题描述

我正在尝试制作一个如下所示的 ruby​​ def:

def title_case(title, minor_words)

end

它应该对字符串变量“title”进行标题大小写,minor_words 变量中的任何单词都将被小写,而不是 minor_words 变量的任何单词都将大写。

例子:

title_case("The King is a Good man", "a and the an at")

-> "the King Is a Good Man"

我尝试编写的代码如下所示:

         def title_case(title, minor_words)
         title = title.downcase.split
         minor_words = minor_words.downcase.split
         title.map {|word| if word == (any word from minor_words)
        word.downcase 
        else 
         word.capitalize
         end}.join(" ")
         end 

如果 minor_words 为空,则返回所有字母大写的标题。像这样:

-> "The King Is A Good Man"

如果 title 为空,或者两者都为空,则返回一个空字符串:

-> ""

希望我把事情说清楚了!谢谢!

标签: ruby

解决方案


您可以使用三元语句:

ary1.map { |e| ary2.include?(e.downcase) ? e.downcase : e }
# => ["the", "man", "is", "not", "nice"]

要在原地改变数组,请使用Array#map!而不是Array#map.


推荐阅读