splitBy

inline fun <T> Iterable<T>.splitBy(isDelimiter: (T) -> Boolean): List<List<T>>

Splits this iterable into segments separated by elements matching isDelimiter, dropping the delimiters.

The result always has one more segment than there are delimiters, so consecutive delimiters and delimiters at either end produce empty segments. An empty receiver yields a single empty segment.