Skip to content

Home

How can I generate all partial substrings of a string in JavaScript?

Sometimes, you might need to generate all partial substrings of a string. This might come in handy in a variety of situations, such as string matching, or string compression. Luckily, using JavaScript's generator functions, this is a fairly simple task.

Left substring generator

Using a for...in loop, we can iterate over the string, and yield each substring, starting at the beginning. We can use String.prototype.slice() to get the substring. In order to terminate early, we can use String.prototype.length to check if the string is empty.

const leftSubstrGenerator = function* (str) {
  if (!str.length) return;
  for (let i in str) yield str.slice(0, i + 1);
};

[...leftSubstrGenerator('hello')];
// [ 'h', 'he', 'hel', 'hell', 'hello' ]

Right substring generator

The exact same technique with a for...in loop can be used when starting at the end of the string. Same as before, albeit with a slight modification, we can use String.prototype.slice() to get the substring. And again, we use String.prototype.length to terminate early if the string is empty.

const rightSubstrGenerator = function* (str) {
  if (!str.length) return;
  for (let i in str) yield str.slice(-i - 1);
};

[...rightSubstrGenerator('hello')];
// [ 'o', 'lo', 'llo', 'ello', 'hello' ]

More like this

Start typing a keyphrase to see matching snippets.