How to Split a String Over Only the First Occurrence in JavaScript


In JavaScript, we can split a string over some delimiter using split().

How can we split only over the first occurrence of the delimiter?

Using split() and join()

Suppose we run split() on a string.

const str = "This is a string";
str.split(" ");

This outputs the following string array:

["This", "is", "a", "string"]

What if we want the string after only the first occurrence?

"is a string"

With slice()

We can split over only the first occurrence of the delimiter using slice() and join().

const str = "This is a string";
str.split(" ").slice(1).join(" "); // "is a string"
  • slice(1) will remove the first element of the array.
  • join(delimiter) will concatenate all elements of the array by the delimiter

With the spread operator ...

Another solution that might be more readable involves using the spread operator.

const str = "This is a string";
const [first, ...rest] = str.split(" ");
rest.join(" "); // "is a string"

Using substring() and indexOf()

We can also avoid split() entirely and use substring() to achieve the same results.

const str = "This is a string";
str.substring(str.indexOf(" ") + 1); // "is a string"
  • indexOf(delimiter) will return the index of the first occurrence of the delimiter
  • substring(index) will return the substring from index until the end.