Я искал метод, похожий на String.split в массиве Scala, но я не смог его найти.
Привет всем, что я хочу сделать, это разделить массив на разделитель.
Например, разделив следующий массив:
val array = Array('a', 'b', '\n', 'c', 'd', 'e', '\n', 'g', '\n')
используя разделитель '\n', должно получиться:
List(Array(a, b), Array(c, d, e), Array(g))
Я знаю, что я могу преобразовать Array в String и применить split там:
array.mkString.split('\n').map(_.toArray)
но я бы предпочел пропустить преобразование.
Решение, которое я до сих пор использует, рекурсивно использует span и немного слишком шаблонный:
def splitArray[T](array: Array[T], separator: T): List[Array[T]] = {
def spanRec(array: Array[T], aggResult: List[Array[T]]): List[Array[T]] = {
val (firstElement, restOfArray) = array.span(_ != separator)
if (firstElement.isEmpty) aggResult
else spanRec(restOfArray.dropWhile(_ == separator), firstElement :: aggResult)
}
spanRec(array, List()).reverse
}
Я уверен, что что-то в Scala мне не хватает. Любая идея?
спасибо, Рубен