ruby - 如何比较来自两个不同数组的元素?红宝石
问题描述
我正在尝试制作一个如下所示的 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 为空,或者两者都为空,则返回一个空字符串:
-> ""
希望我把事情说清楚了!谢谢!
解决方案
您可以使用三元语句:
ary1.map { |e| ary2.include?(e.downcase) ? e.downcase : e }
# => ["the", "man", "is", "not", "nice"]
要在原地改变数组,请使用Array#map!
而不是Array#map
.
推荐阅读
- java - 在xml spring批处理应用程序中复制标题标签
- vue.js - 在观察者内部调用`_.debounce`不起作用
- c++ - 我被 C++ 中的这个结构困住了
- c - ? sscanf 正则表达式中的运算符
- r - R中两个面板数据模型的fixst包中的F检验
- excel - 如何合并重复的 VBA 代码?
- codeigniter - 如何在 Codeigniter 中访问对象
- reactjs - NextJS 动态表单未提交所需对象
- java - 如何使安卓设备的所有类型的声音输出静音?
- reactjs - Apollo GraphQL:为什么子组件中的 useMutation 会触发父组件中的重新渲染