让我说我有这个阵列:
array = ["str1", "str2", "str3", "str4", "str5", "str6", "str7", "str8"]
我在做什么:
array.delete_if {|i| i == "str1" || i == "str3" || i == "str5"}
我得到了:
["str2", "str4", "str6", "str7", "str8"]
有没有更好的方法在ruby中做到这一点?
答案 0 :(得分:32)
你可以这样做:
array - %w{str1 str2 str3}
请注意,这会返回一个删除了"str1"
,"str2"
和"str3"
的新数组,而不是直接修改array
(如delete_if
所做的那样)。您可以简洁地将新数组重新分配给array
:
array -= %w{str1 str2 str3}
答案 1 :(得分:1)
array.reject{|e| e=~ /str[135]/}