Returns the longest possible subsequences of the collection, in order, that don’t contain elements satisfying the given predicate.
SDK
- Xcode 8.0+
Framework
- Swift Standard Library
Declaration
func split(maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true, whereSeparator isSeparator: (Element) throws -> Bool) rethrows -> [ArraySlice <Element>]
Parameters
maxSplitsThe maximum number of times to split the collection, or one less than the number of subsequences to return. If
maxsubsequences are returned, the last one is a suffix of the original collection containing the remaining elements.Splits + 1 maxmust be greater than or equal to zero. The default value isSplits Int..max omittingEmptySubsequencesIf
false, an empty subsequence is returned in the result for each pair of consecutive elements satisfying theispredicate and for each element at the start or end of the collection satisfying theSeparator ispredicate. The default value isSeparator true.isSeparatorA closure that takes an element as an argument and returns a Boolean value indicating whether the collection should be split at that element.
Return Value
An array of subsequences, split from this collection’s elements.
Discussion
The resulting array consists of at most max subsequences. Elements that are used to split the sequence are not returned as part of any subsequence.
The following examples show the effects of the max and omitting parameters when splitting a string using a closure that matches spaces. 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!"
print(line.split(whereSeparator: { $0 == " " }))
// Prints "["BLANCHE:", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]"
The second example passes 1 for the max parameter, so the original string is split just once, into two new strings.
print(line.split(maxSplits: 1, whereSeparator: { $0 == " " }))
// Prints "["BLANCHE:", " I don\'t want realism. I want magic!"]"
The final example passes false for the omitting parameter, so the returned array contains empty strings where spaces were repeated.
print(line.split(omittingEmptySubsequences: false, whereSeparator: { $0 == " " }))
// Prints "["BLANCHE:", "", "", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]"
Complexity: O(n), where n is the length of the collection.