Ruby中如何检查数组各元素内部是否包含指定目标值
Ruby 数组元素子串匹配实现方案
数组自带的Array#include?方法逻辑为完整匹配数组元素值,仅当传入参数与某一数组元素完全相等时返回true,无法识别元素内部的部分内容,不匹配当前需求。
要检查数组中是否存在包含指定子串的元素,最通用的实现是调用Enumerable#any?遍历元素,搭配字符串实例的include?方法做子串判断:
arr = ['15, Balloons', '1, Onions', '18, Soap'] # 检查是否存在包含"Soap"子串的元素 has_soap = arr.any? { |item| item.include?('Soap') } puts has_soap # => true
如果需要更严谨的匹配规则,比如要求"Soap"必须是独立单词,避免匹配到"SoapBox"这类包含目标字符但语义不符的内容,可以使用正则做边界校验:
# \b为单词边界符,仅匹配独立出现的"Soap"单词 has_soap = arr.any? { |item| item.match?(/\bSoap\b/) }
如果需要获取匹配到的完整元素内容,而非仅判断存在性,将any?替换为find即可:
soap_item = arr.find { |item| item.include?('Soap') } puts soap_item # => "18, Soap"
内容的提问来源于stack exchange,提问作者Bryan de Jesus Uscanga Ramirez
相关产品推荐
相关产品推荐

