Как сканировать текст на наличие нескольких строк? - PullRequest
2 голосов
/ 29 февраля 2012

Я сканирую название продукта, чтобы проверить, существует ли в нем конкретная строка.Прямо сейчас это работает для одной строки, но как я могу сканировать несколько строк?например, я хотел бы отсканировать как яблоко, так и майкрософт

product.name.downcase.scan(/apple/)

Если строка обнаружена, я получаю ["apple"], если нет, то она возвращает nil []

Ответы [ 2 ]

5 голосов
/ 29 февраля 2012

Вы можете использовать чередование регулярных выражений :

product.name.downcase.scan(/apple|microsoft/)

Если вам нужно только знать, содержит ли строка какую-либо из указанных строк, вам лучше использовать одиночное совпадение = ~ вместо scan.

str = 'microsoft, apple and microsoft once again'

res = str.scan /apple|microsoft/ # => res = ["microsoft", "apple", "microsoft"]
# do smth with res

# or
if str =~ /apple|microsoft/
  # do smth
end
2 голосов
/ 29 февраля 2012

Вы также можете вообще пропустить регулярные выражения:

['apple', 'pear', 'orange'].any?{|s| product.name.downcase.match(s)}

или

['apple', 'pear', 'orange'].any?{|s| product.name.downcase[s]}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...