# JavaScript: Count the occurrence of a substring in a string

## JavaScript String: Exercise-18 with Solution

Write a JavaScript function to count the occurrence of a substring 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:

Sample Solution-1:

JavaScript Code:

``````function count(main_str, sub_str)
{
main_str += '';
sub_str += '';

if (sub_str.length <= 0)
{
return main_str.length + 1;
}

subStr = sub_str.replace(/[.*+?^\${}()|[\]\\]/g, '\\\$&');
return (main_str.match(new RegExp(subStr, 'gi')) || []).length;
}

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));
```
```

Sample Output:

```2
1
```

Flowchart:

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
// countSubstrings
const count_substr = (str, searchValue) => {
let count = 0,
i = 0;
while (true) {
const r = str.indexOf(searchValue, i);
if (r !== -1) [count, i] = [count + 1, r + 1];
else return count;
}
};
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
```

Flowchart:

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

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

﻿

## JavaScript: Tips of the Day

Tagged template literals

```function getPersonInfo(one, two, three) {
console.log(one);
console.log(two);
console.log(three);
}

const person = 'Lydia';
const age = 21;

getPersonInfo`\${person} is \${age} years old`;
```

If you use tagged template literals, the value of the first argument is always an array of the string values. The remaining arguments get the values of the passed expressions!

Ref: https://bit.ly/323Y0P6