Open
Description
This proposes to add Seq.splitAround(separator): (Seq, Seq)
which splits a sequence in all items before and after the first item that is equal to the given separator.
SplitAround
is useful for a very common string operation for which no handy operator exists. For example:
"bucket/path/prefix".splitAround('/') === ("bucket", "path/prefix")
"key=value".splitAround('=') === ("key", "value")
A simple implementation would be:
trait Seq[A] {
def splitAround(separator: A): (Seq[A], Seq[A]) = {
val (before, after) = this.splitAt(this.indexOf(separator))
(before, after.drop(1))
}
}
Ideally, the result uses the same concrete type of sequence as the given sequence. E.g. String.splitAround
returns a pair of String
s and Vector.splitAround
returns a pair of Vector
s.
In addition, it would be nice to have a similar splitAroundLast
which splits around the last separator value.
(Updated after @ritschwumm 's comment.)
Metadata
Metadata
Assignees
Labels
No labels