2017-02-13 5 views
0

Ich habe ein Array von 10 Stück eines mehrere Zeilen Zeichenfolge wieLöschen bestimmte Zeichenfolge Zeilen von Elementen in Array Ruby-

one string 
two string 
some string 
any string 

enthält Ich möchte Zeilen löschen Worte einige und zwei enthält. Ich habe Code wie folgt aus:

search_text_domain = %r{some|two} 
    groups_data.each do |line| 
     line.each_line do |num| 
     domain_users_name << (num) unless num =~ search_text_domain 
     end 
    end 

Es funktioniert gut, aber es bringt alle Linien zu einem großen Array wie domain_users_name = ["one string", "any string", "big string", "another_s....] und ich will tu es wie

von Arrays in Arrays setzen
domain_users_name = [["one string", "any string"], ["big string", ""another_s...."], [........ 

I Version benötigen, das Ändern Sie das Array groups_data permanent. Irgendwelche Ideen?

+0

Und wenn eine Zeichenfolge des Subarrays "einige" oder "zwei" enthält, sollte das ganze Subarray verworfen werden oder sollte nur diese eine Zeichenfolge? – ndn

+0

Nur diese eine Saite. – mila002

Antwort

1
input = ["one string\ntwo string\nsome string\nany string", 
     "one string\ntwo string\nsome string\nany string"] 


input.map { |a| a.split("\n").reject { |e| e =~ %r{some|two} } } 

# or 
# input.map { |a| a.each_line.map(&:strip).reject { |e| e =~ %r{some|two} } } 

# or (smiley-powered version, see the method’s tail) 
# input.map { |a| a.each_line.map(&:strip).reject(&%r{some|two}.method(:=~)) } 

#⇒ [["one string", "any string"], ["one string", "any string"]] 
+0

Das war's, danke. – mila002

0

Sie möchten also eine Gruppe löschen, wenn eines der Gruppenelemente dem Filter regexp entspricht?

groups = [['some', 'word'], ['other', 'word'], ['unrelated', 'list', 'of', 'things']] 

filter = %r{word|some} 
filtered = groups.delete_if do |group| 
    group.any? do |word| 
    word =~ filter 
    end 
end 

p filtered 

Macht das, was Sie wollen?

+0

Elemente des ursprünglichen Arrays sieht wie 'Array = [" eine Zeichenfolge \ nsecond Zeichenfolge "," andere Zeichenfolge \ nother andere Zeichenfolge] "- es gibt neue Zeilen mit wird secon get array = ["eine Zeichenkette", "andere Zeichenkette \ andere andere Zeichenkette"] – mila002

Verwandte Themen