Проверка того, являются ли значения в списке частью String - программирование
Подтвердить что ты не робот

Проверка того, являются ли значения в списке частью String

У меня есть строка вроде этого:

val a = "some random test message"

У меня есть список вроде этого:

val keys = List("hi","random","test")

Теперь я хочу проверить, содержит ли строка a любые значения из keys. Как это сделать, используя встроенные библиотечные функции Scala?

(Я знаю способ разделения a на List, а затем выполнить проверку с помощью keys, а затем найти решение, но я ищу способ более просто решить его с помощью стандартных библиотечных функций.)

4b9b3361

Ответ 1

Что-то вроде этого?

keys.exists(a.contains(_)) 

Или даже более идиоматически

keys.exists(a.contains)

Ответ 2

Простым случаем является проверка содержания подстроки (как указано в ответе rarry), например

keys.exists(a.contains(_)) 

Вы не сказали, хотите ли вы на самом деле найти целые слова. Поскольку rarry ответ предполагал, что вы этого не сделали, вот альтернатива, которая предполагает, что вы это делаете.

val a = "some random test message"
val words = a.split(" ")
val keys = Set("hi","random","test") // could be a List (see below)
words.exists(keys contains _)

Имейте в виду, что список ключей эффективен только для небольших списков. Со списком метод contains обычно сканирует весь список линейно, пока не найдет совпадение или не достигнет конца.

Для большего количества элементов набор не только предпочтительнее, но и является более истинным представлением информации. Наборы, как правило, оптимизируются с помощью хэш-кодов и т.д., И поэтому они нуждаются в меньшем линейном поиске - или вообще ничего.