Skip to main content

How to Get the Index of a Character in a String in JavaScript

Finding the position of a character or substring within a string is a fundamental operation in text processing. JavaScript provides several built-in String methods that make this task simple and efficient.

This guide will teach you how to use indexOf() to find the first occurrence, lastIndexOf() to find the last occurrence, and a simple loop to find all occurrences of a character in a string.

The Core Concept: Zero-Based Indexing

It is essential to remember that strings in JavaScript are zero-indexed. This means the first character is at index 0, the second is at index 1, and so on. The last character is at index string.length - 1.

How to Find the First Occurrence: String.prototype.indexOf()

The indexOf() method returns the index of the first occurrence of a specified value in a string.

  • If the value is found, it returns the index.
  • If the value is not found, it returns -1.

Problem: you need to find the index of the first 'l' in a string.

// Problem: What is the index of the first 'l'?
const myString = 'hello world';

Solution:

const myString = 'hello world';

const firstIndex = myString.indexOf('l');
console.log(firstIndex); // Output: 2

const notFoundIndex = myString.indexOf('z');
console.log(notFoundIndex); // Output: -1

if (myString.indexOf('w') !== -1) {
console.log("The character 'w' was found.");
}

How to Find the Last Occurrence: String.prototype.lastIndexOf()

The lastIndexOf() method is similar to indexOf(), but it returns the index of the last occurrence of a specified value.

Problem: you need to find the index of the last 'l' in a string.

const myString = 'hello world';

Solution::

const myString = 'hello world';

const lastIndex = myString.lastIndexOf('l');
console.log(lastIndex); // Output: 9
note

This is useful for tasks like finding the last / in a URL to get the filename.

How to Find All Occurrences of a Character

To find the indexes of every occurrence of a character, you must iterate through the string and collect the indexes of each match. A for loop is a simple and effective way to do this.

The logic:

  1. Initialize an empty array to store the indexes.
  2. Loop through the string from the first character to the last.
  3. On each iteration, check if the character at the current index is the one you are looking for.
  4. If it is, push the current index into your array.

Solution:

function findAllIndexes(str, char) {
const indexes = [];
for (let i = 0; i < str.length; i++) {
if (str[i] === char) {
indexes.push(i);
}
}
return indexes;
}

// Example Usage:
const myString = 'hello world';
const allIndexesOfL = findAllIndexes(myString, 'l');

console.log(allIndexesOfL); // Output: [2, 3, 9]

Conclusion

JavaScript's built-in string methods provide a simple and powerful API for finding the position of characters.

  • To find the first occurrence, use string.indexOf(char).
  • To find the last occurrence, use string.lastIndexOf(char).
  • To find all occurrences, iterate through the string with a for loop and collect the indexes of all matches.
  • All these methods are case-sensitive. For case-insensitive searches, you would first convert the string to a consistent case (e.g., .toLowerCase()).