如何以不区分大小写的方式从数组中删除元素?

时间:2016-12-04 19:19:57

标签: arrays ruby case-insensitive removeall

我在起诉Ruby 2.3。当我想按值从数组中删除字符串元素时,我可以

2.3.0 :005 > a.delete("AB")
 => "AB" 

但是如何以不区分大小写的方式删除元素?也就是说,我该如何制作

a.delete(“ab”)

表现得像

a.delete(“AB”)

3 个答案:

答案 0 :(得分:1)

a.reject!{|str| str.casecmp("AB").zero?}  

casecompString#<=>的不区分大小写的版本。
a.reject!{|str| str.casecmp("ab").zero?}的行为完全相同。

答案 1 :(得分:0)

您可以改为使用Array#reject,如下所示:

bad_string_downcase = bad_string.downcase
a.reject! { |element| element.downcase == bad_string_downcase }

或使用正则表达式:

a.reject! { |element| element.match %r{^#{bad_string}$}i }

答案 2 :(得分:0)

尝试delete_if

a.delete_if { |s| s.downcase == 'ab' }