# `indexOf`

## Description

Returns the position of the first occurrence of a substring within a string.

The index is zero-based. If the substring is not found, the function returns `-1`.

## Syntax

Like many functions in DataPrime, `indexOf` supports [two notations](https://coralogix.com/docs/dataprime/language-reference/functions-reference/index.md), **function** and **method** notation. These interchangeable forms allow flexibility in how you structure expressions.

```dataprime
indexOf(value: string, substring: string): number
```

```dataprime
(value: string).indexOf(substring: string): number
```

## Arguments

| Name      | Type   | Required | Description                          |
| --------- | ------ | -------- | ------------------------------------ |
| value     | string | **true** | The full string to search (haystack) |
| substring | string | **true** | The substring to locate (needle)     |

## Example

**Extract a value from a key-value style string**

Consider the following document:

```json
{
    "msg": "result=Some value"
}
```

Use `indexOf` to find the position of `=` and then extract everything after it.

### Example query

```dataprime
create index_of_value from (indexOf(msg, '='))
```

```dataprime
create index_of_value from (msg.indexOf('='))
```

### Example output

With the index known, you can extract the substring:

```dataprime
create value from msg.substr(index_of_value)
```

Result:

```json
{
    "msg": "result=Some value",
    "index_of_value": 6,
    "value": "Some value"
}
```
