w3resource

JavaScript: Count the occurrence of a substring in a string

JavaScript String: Exercise-18 with Solution

Write a JavaScript function to count substrings in a string.

Test Data:
console.log(count("The quick brown fox jumps over the lazy dog", 'the'));
Output:
2
console.log(count("The quick brown fox jumps over the lazy dog", 'fox',false));
Output:
1

Pictorial Presentation:

JavaScript: Count the occurrence of a substring in a string

Sample Solution-1:

JavaScript Code:

// Define a function named count that takes two parameters: main_str (the main string) and sub_str (the substring to count)
function count(main_str, sub_str) 
{
    // Convert main_str and sub_str to strings if they are not already
    main_str += '';
    sub_str += '';

    // If sub_str is an empty string or undefined, return the length of main_str plus 1
    if (sub_str.length <= 0) 
    {
        return main_str.length + 1;
    }

    // Escape special characters in sub_str for use in regular expression
    subStr = sub_str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
    
    // Count the occurrences of sub_str in main_str using a regular expression and return the count
    return (main_str.match(new RegExp(subStr, 'gi')) || []).length;
}

// Test the count function with sample input strings and log the results to the console
console.log(count("The quick brown fox jumps over the lazy dog", 'the'));
console.log(count("The quick brown fox jumps over the lazy dog", 'fox',false));

console.log(count("The quick brown fox jumps over the lazy dog", 'fox',false));

Output:

2
1

Explanation:

In the exercise above,

  • The "count()" function takes two parameters: 'main_str' (the main string) and 'sub_str' (the substring to count).
  • It converts both 'main_str' and 'sub_str' to strings if they are not already strings.
  • If 'sub_str' is an empty string or undefined, the function returns the length of 'main_str' plus 1.
  • It escapes special characters in 'sub_str' using a regular expression.
  • It counts the occurrences of 'sub_str' in 'main_str' using a global case-insensitive regular expression match and returns the count.
  • The function is tested with sample input strings, and the results are logged to the console.

Flowchart:

Flowchart: JavaScript- Count the occurrence of a substring in a string

Sample Solution-2:

Counts the occurrences of a substring in a given string.

  • Use Array.prototype.indexOf() to look for searchValue in str.
  • Increment a counter if the value is found and update the index, i.
  • Use a while loop that will return as soon as the value returned from Array.prototype.indexOf() is -1.

JavaScript Code:

// Source: https://bit.ly/3hEZdCl
// Function to count the occurrences of a substring within a main string
const count_substr = (str, searchValue) => {
  let count = 0, // Initialize a counter variable
    i = 0; // Initialize an index variable
  
  // Loop until the end of the string is reached
  while (true) {
    // Find the index of the next occurrence of the searchValue in the string starting from index i
    const r = str.indexOf(searchValue, i);
    
    // If the searchValue is found in the string
    if (r !== -1) {
      // Increment the counter by 1 and update the index to start searching from the next position
      [count, i] = [count + 1, r + 1];
    } else {
      // If the searchValue is not found, return the final count
      return count;
    }
  }
}; 

// Test cases
console.log(count_substr("The quick brown fox jumps over the lazy dog", 'the'));
console.log(count_substr("The quick brown fox jumps over the lazy dog", 'fox'));

Sample Output:

1
1

Explanation:

The above JavaScript code defines a function "count_substr()" that counts the occurrences of a substring within a main string. It iterates through the main string using 'indexOf' to find each occurrence of the substring, updating a counter variable accordingly. Finally, it returns the total count of occurrences.

Finally two test cases demonstrate its usage by counting the occurrences of different substrings within given main strings.

Flowchart:

Flowchart: JavaScript- Count the occurrence of a substring in a string

Live Demo:

See the Pen JavaScript Count the occurrence of a substring in a string - string-ex-18 by w3resource (@w3resource) on CodePen.


Improve this sample solution and post your code through Disqus

Previous: Write a JavaScript function to chop a string into chunks of a given length.
Next: Reverse a Binary string.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.