如何检查数组中的每个单词是否包含子字符串并拒绝 Rails 上 Ruby 中的那些?
How to check if each word in an array contains a substring and reject those in Ruby on Rails?
a = ["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"]
a = a.reject { |x| x.in? ["GOOD", "VALID"]}
#=> ["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"]
我不想要包含子字符串 VALID 或 GOOD 的单词。
输出应仅为 ["SUPER"]
。
您可以使用 include?
:
a.reject { |x| ["GOOD", "VALID"].any?{ |word| x.include?(word) } }
#=> ["SUPER"]
你可以这样说:
a = a.reject { |x| x.include?("GOOD") || x.include?("VALID")}
in?
所做的是检查接收者是否存在于作为参数传递的数组中,意思是:
1.in?([1, 2]) # true
3.in?([1, 2]) # false
也就是说,它检查 "whole" 对象,而不是它的一部分。
如果你想拒绝数组中匹配VALID
and/or GOOD
的元素,你可以使用=~
:
["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"].reject { |word| word =~ /VALID|GOOD/ } # ["SUPER"]
注意,这也会拒绝 "VALIDITY"、"GOODNESS" 等词
grep_v
可行:
a = ["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"]
a = a.grep_v(/GOOD|VALID/)
#=> ["SUPER"]
a = ["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"]
a = a.reject { |x| x.in? ["GOOD", "VALID"]}
#=> ["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"]
我不想要包含子字符串 VALID 或 GOOD 的单词。
输出应仅为 ["SUPER"]
。
您可以使用 include?
:
a.reject { |x| ["GOOD", "VALID"].any?{ |word| x.include?(word) } }
#=> ["SUPER"]
你可以这样说:
a = a.reject { |x| x.include?("GOOD") || x.include?("VALID")}
in?
所做的是检查接收者是否存在于作为参数传递的数组中,意思是:
1.in?([1, 2]) # true
3.in?([1, 2]) # false
也就是说,它检查 "whole" 对象,而不是它的一部分。
如果你想拒绝数组中匹配VALID
and/or GOOD
的元素,你可以使用=~
:
["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"].reject { |word| word =~ /VALID|GOOD/ } # ["SUPER"]
注意,这也会拒绝 "VALIDITY"、"GOODNESS" 等词
grep_v
可行:
a = ["SUPER", "SOME_VALID", "ROME_INVALID", "SUPER_GOOD"]
a = a.grep_v(/GOOD|VALID/)
#=> ["SUPER"]