Почему бы не сопоставить шаблон с регулярным выражением? Если ваши строки представляют определенное количество элементов для извлечения и различные разделители, я мог бы быть лучше:
val l1 = """28.225.37.170 - - [14/May/2019:00:00:05 +0000] "GET xxxxxx "-" "yyyyyy""""
val l2 = """80.156.48.65 - - [14/May/2019:00:00:10 +0000] "GET xxxxxxx "-" "yyyyyy""""
val reg = """(.*) - - \[(.*)\] "GET (.*) "-" "(.*)"""".r
def splitMyLine(line:String) = line match { case reg(a,b,c,d) => "line: \n" +Seq(a,b,c,d).map(s => s" __ data: $s").mkString("\n") }
Seq(l1, l2).foreach(l => println(splitMyLine(l)))
дает:
line:
__ data: 28.225.37.170
__ data: 14/May/2019:00:00:05 +0000
__ data: xxxxxx
__ data: yyyyyy
line:
__ data: 80.156.48.65
__ data: 14/May/2019:00:00:10 +0000
__ data: xxxxxxx
__ data: yyyyyy
Вы можете просто определить свою функцию разделения следующим образом:
def splitMyLine(line:String): Seq[String] = line match {
case reg(a,b,c,d) => Seq(a,b,c,d)
}
Надеюсь, это поможет.