Вы можете создать список кортежей, содержащих предикаты и функции для обработки ввода, который вы хотите применить и добавить к Seq
:
val numberRegex = "([0-9]{4,})".r
val predicates = List[(String => Boolean, String => String)](
(s => s.contains("US"), _ => "US"),
(s => s.contains("India"), s => s.toUpperCase()),
(s => numberRegex.findFirstIn(s).nonEmpty, s => numberRegex.findFirstIn(s).head)
)
А затем вам нужно просто создать метод для сборки Seq
:
def process(s: String): Seq[String] = predicates.collect{
case (predicate, value) if predicate(s) => value(s)
}
process("00US_India0234") //List(US, 00US_INDIA0234, 0234)