<!--
{
  "availability" : [
    "iOS: 8.0.0 -",
    "iPadOS: 8.0.0 -",
    "macCatalyst: 13.0.0 -",
    "macOS: 10.10.0 -",
    "tvOS: 9.0.0 -",
    "visionOS: 1.0.0 -",
    "watchOS: 2.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "Swift",
  "identifier" : "/documentation/Swift/Repeated/split(separator:maxSplits:omittingEmptySubsequences:)-c1tr",
  "metadataVersion" : "0.1.0",
  "role" : "Instance Method",
  "symbol" : {
    "kind" : "Instance Method",
    "modules" : [
      "Swift"
    ],
    "preciseIdentifier" : "s:STsSQ7ElementRpzrlE5split9separator9maxSplits25omittingEmptySubsequencesSays10ArraySliceVyABGGAB_SiSbtF::SYNTHESIZED::s:s8RepeatedV"
  },
  "title" : "split(separator:maxSplits:omittingEmptySubsequences:)"
}
-->

# split(separator:maxSplits:omittingEmptySubsequences:)

Returns the longest possible subsequences of the sequence, in order,
around elements equal to the given element.

```
func split(separator: Self.Element, maxSplits: Int = Int.max, omittingEmptySubsequences: Bool = true) -> [ArraySlice<Self.Element>]
```

## Parameters

`separator`

The element that should be split upon.

`maxSplits`

The maximum number of times to split the sequence, 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
sequence containing the remaining elements. `maxSplits` must be
greater than or equal to zero. The default value is `Int.max`.

`omittingEmptySubsequences`

If `false`, an empty subsequence is
returned in the result for each consecutive pair of `separator`
elements in the sequence and for each instance of `separator` at the
start or end of the sequence. If `true`, only nonempty subsequences
are returned. The default value is `true`.

## Return Value

An array of subsequences, split from this sequence’s elements.

## Discussion

The resulting array consists of at most `maxSplits + 1` 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 `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!"
print(line.split(separator: " ")
          .map(String.init))
// 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.

```
print(line.split(separator: " ", maxSplits: 1)
          .map(String.init))
// 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.

```
print(line.split(separator: " ", omittingEmptySubsequences: false)
          .map(String.init))
// Prints "["BLANCHE:", "", "", "I", "don\'t", "want", "realism.", "I", "want", "magic!"]"
```

> Complexity: O(*n*), where *n* is the length of the sequence.

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)