2013-10-02 3 views
1

У меня есть два массива строк, и мне нужно исключить элементы из одного, содержащего элементы второго.Исключая элементы строкового массива из другого массива

strings = ["chairs are on sale today", "my dog likes bumblebees", "one bad apple", "most snow is green"] 

nouns = ["chair", "stove", "apple"] 

идеальный результат будет массивом (либо новые или измененные строки), которая содержит

["my dog likes bumblebees", "most snow is green"] 

Если это были точные совпадения, я мог бы использовать встроенные функции:

result = strings - nouns 

, но, очевидно, это не сработает.

Есть ли простой способ сделать это, используя grep, select или какую-нибудь другую функцию ruby?

Спасибо!

ответ

4
strings.reject { |string| string =~ Regexp.union(nouns) } 
+0

или 'strings.reject & Regexp.union (существительные) .method (: match) .to_proc'. Не то чтобы ваш не намного лучше. –

+0

@spickermann - работал как шарм, спасибо! – user2840346

Смежные вопросы