split(separator:maxSplits:omittingEmptySubsequences:)
Lazily returns the longest possible subsequences of the collection, in order, around elements equal to the given element.
func split(separator: Element, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> SplitCollection<Elements>
Parameters
- separator
The element that should be split upon.
- maxSplits
The maximum number of times to split the collection, or one less than the number of subsequences to return. If
maxSplits + 1
subsequences are returned, the last one is a suffix of the original collection containing the remaining elements.maxSplits
must be greater than or equal to zero. The default value isInt.max
.- omittingEmptySubsequences
If
false
, an empty subsequence is returned in the result for each consecutive pair ofseparator
elements in the collection and for each instance ofseparator
at the start or end of the collection. Iftrue
, only nonempty subsequences are returned. The default value istrue
.
Returns
A lazy collection of subsequences split from this collection’s elements.
The resulting lazy collection consists of at most maxSplits + 1
subsequences. Elements that are used to split the collection are not returned as part of any subsequence (except possibly the last one, in the case where maxSplits
is less than the number of separators in the collection).
The following examples show the effects of the maxSplits
and omittingEmptySubsequences
parameters when splitting a string at each space character (” “). The first use of split
returns each word that was originally separated by one or more spaces.
let line = "BLANCHE: I don't want realism. I want magic!"
for spaceless in line.lazy.split(separator: " ") {
print(spaceless)
}
// Prints
// BLANCHE:
// I
// don't
// want
// realism.
// I
// want
// magic!
The second example passes 1
for the maxSplits
parameter, so the original string is split just once, into two new strings.
for spaceless in line.lazy.split(separator: " ", maxSplits: 1) {
print(spaceless)
}
// Prints
// BLANCHE:
// I don't want realism. I want magic!
The final example passes false
for the omittingEmptySubsequences
parameter, so the returned array contains empty strings where spaces were repeated.
for spaceless in line.lazy.split(
separator: " ",
omittingEmptySubsequences: false
) {
print(spaceless)
}
// Prints
// BLANCHE:
//
//
// I
// don't
// want
// realism.
// I
// want
// magic!