---
title: "enumerateSubstrings(in:options:using:)"
framework: foundation
role: symbol
role_heading: Instance Method
path: "foundation/nsstring/enumeratesubstrings(in:options:using:)"
---

# enumerateSubstrings(in:options:using:)

Enumerates the substrings of the specified type in the specified range of the string.

## Declaration

```swift
func enumerateSubstrings(in range: NSRange, options opts: NSString.EnumerationOptions = [], using block: @escaping (String?, NSRange, NSRange, UnsafeMutablePointer<ObjCBool>) -> Void)
```

## Parameters

- `range`: The range within the string to enumerate substrings.
- `opts`: Options specifying types of substrings and enumeration styles.
- `block`: The block executed for the enumeration. The block takes four arguments:

## Discussion

Discussion If this method is sent to an instance of NSMutableString, mutation (deletion, addition, or change) is allowed, as long as it is within enclosingRange. After a mutation, the enumeration continues with the range immediately following the processed range, after the length of the processed range is adjusted for the mutation. (The enumerator assumes any change in length occurs in the specified range.) For example, if the block is called with a range starting at location N, and the block deletes all the characters in the supplied range, the next call will also pass N as the index of the range. This is the case even if mutation of the previous range changes the string in such a way that the following substring would have extended to include the already enumerated range. For example, if the string “Hello World” is enumerated via words, and the block changes “Hello “ to “Hello”, thus forming “HelloWorld”, the next enumeration will return “World” rather than “HelloWorld”.

## See Also

### Finding Characters and Substrings

- [contains(_:)](foundation/nsstring/contains(_:).md)
- [localizedCaseInsensitiveContains(_:)](foundation/nsstring/localizedcaseinsensitivecontains(_:).md)
- [localizedStandardContains(_:)](foundation/nsstring/localizedstandardcontains(_:).md)
- [rangeOfCharacter(from:)](foundation/nsstring/rangeofcharacter(from:).md)
- [rangeOfCharacter(from:options:)](foundation/nsstring/rangeofcharacter(from:options:).md)
- [rangeOfCharacter(from:options:range:)](foundation/nsstring/rangeofcharacter(from:options:range:).md)
- [range(of:)](foundation/nsstring/range(of:).md)
- [range(of:options:)](foundation/nsstring/range(of:options:).md)
- [range(of:options:range:)](foundation/nsstring/range(of:options:range:).md)
- [range(of:options:range:locale:)](foundation/nsstring/range(of:options:range:locale:).md)
- [localizedStandardRange(of:)](foundation/nsstring/localizedstandardrange(of:).md)
- [enumerateLines(_:)](foundation/nsstring/enumeratelines(_:).md)
