Сканирование массива строк на совпадения в Ruby - PullRequest
3 голосов
/ 09 марта 2011

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

Примеры предложений

Strings[0] = "Subject family leans toward cats" 
Strings[1] = "Test subject prefers dogs"

Я пробовал String.each {|x| x.scan(/cat|dog)/ }, но в результатах я получу только последний матчкак я могу сделать это правильно, чтобы получить puts $1 => cat puts $2 => dog?Спасибо за вашу помощь

Ответы [ 4 ]

4 голосов
/ 10 марта 2011
strings = [ "Subject family leans toward cats",
            "Test subject prefers dogs" ]
cat_and_dogs = strings.join.scan /cat|dog/
#=> ["cat", "dog"]

так что теперь вы можете puts это:

puts cats_and_dogs[0]
#=> "cat"
puts cats_and_dogs[1]
#=> "dog"
puts cats_and_dogs.join(" & ")
#=> "cat & dog"
2 голосов
/ 10 марта 2011
sentences = [
  "Subject family leans toward cats",
  "Test subject prefers dogs",
]

sentences.flat_map { |s| s.scan(/dog|cat/) }
# => ["cat", "dog"]   
0 голосов
/ 10 марта 2011

Это должно работать для вас.

list = ["Subject family leans toward cats.","Tes subject perfers dogs not cats"]
list.each { |x| 
    puts x.scan(/cat|dog/) 
}

выход:

cat
dog
cat
0 голосов
/ 09 марта 2011

Я не совсем понимаю вопрос, но попробуйте это и посмотрите, поможет ли это вам добиться прогресса:

["...", "..."].map { |e| e[/cat|dog/] }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...