---
title: "formIndex(_:offsetBy:limitedBy:)"
framework: swift
role: symbol
role_heading: Instance Method
path: "swift/string/formindex(_:offsetby:limitedby:)"
---

# formIndex(_:offsetBy:limitedBy:)

Offsets the given index by the specified distance, or so that it equals the given limiting index.

## Declaration

```swift
func formIndex(_ i: inout Self.Index, offsetBy distance: Int, limitedBy limit: Self.Index) -> Bool
```

## Parameters

- `i`: A valid index of the collection.
- `distance`: The distance to offset i. distance must not be negative unless the collection conforms to the BidirectionalCollection protocol.
- `limit`: A valid index of the collection to use as a limit. If distance > 0, a limit that is less than i has no effect. Likewise, if distance < 0, a limit that is greater than i has no effect.

## Return Value

Return Value true if i has been offset by exactly distance steps without going beyond limit; otherwise, false. When the return value is false, the value of i is equal to limit.

## Discussion

Discussion The value passed as distance must not offset i beyond the bounds of the collection, unless the index passed as limit prevents offsetting beyond those bounds. note: O(1) if the collection conforms to RandomAccessCollection; otherwise, O(k), where k is the absolute value of distance.

## See Also

### Manipulating Indices

- [startIndex](swift/string/startindex.md)
- [endIndex](swift/string/endindex.md)
- [index(after:)](swift/string/index(after:).md)
- [formIndex(after:)](swift/string/formindex(after:).md)
- [index(before:)](swift/string/index(before:).md)
- [formIndex(before:)](swift/string/formindex(before:).md)
- [index(_:offsetBy:)](swift/string/index(_:offsetby:).md)
- [index(_:offsetBy:limitedBy:)](swift/string/index(_:offsetby:limitedby:).md)
- [formIndex(_:offsetBy:)](swift/string/formindex(_:offsetby:).md)
- [distance(from:to:)](swift/string/distance(from:to:).md)
- [indices](swift/string/indices-swift.property.md)
