Ruby中include?方法返回false不符合预期,请求原因分析
问题原因解析
Ruby的字符串比较是大小写敏感的,你这段代码返回false的核心原因是两个字符串存在大小写差异:
原数组中的目标字符串是:"86f4914a-d5b4-4034-a3ff-4e0c5fdb6bbd",其中的字母为小写c;
而你传给include?方法的字符串是:"86f4914a-d5b4-4034-a3ff-4e0C5fdb6bbd",这里的C是大写形式。
因为Ruby默认的字符串相等判断严格区分大小写,所以这两个字符串会被判定为不同元素,导致include?返回false。
如果需要不区分大小写的匹配,可以将数组元素和目标字符串统一转换为小写(或大写)后再判断,示例代码如下:
[ "86f4914a-d5b4-4034-a3ff-4e0c5fdb6bbd", "0b9bae30-6df1-4569-96c4-fecbc1db6509", "cf2b2787-ea29-4604-92d3-890b7004e38e" ].any? { |str| str.downcase == "86f4914a-d5b4-4034-a3ff-4e0C5fdb6bbd".downcase } #=> true
内容的提问来源于stack exchange,提问作者coder
相关产品推荐
相关产品推荐

