Home
Java
String Occurrence Count
Updated Nov 8, 2023
Dot Net Perls
String occurrence count. A string may occur many times within another string. We can count these occurrences with a while-loop and the indexOf method.
while
With indexOf, we search for the next occurrence in the string. We increment a count variable to keep track of matches. This method is efficient.
String indexOf
Example code. Here we introduce the countStringOccurrences method. This method receives two parameters. It returns the count of one string within another.
Argument 1 This is the source string we want to search within. We name this argument "text."
Argument 2 This is the string we want to find—the pattern within the first string. We name this argument "pattern."
Info In main() we test the countStringOccurrences method. We can check the results with a sample string.
public class Program { public static int countStringOccurrences(String text, String pattern) { int count = 0; int i = 0; // Keep calling indexOf for the pattern. while ((i = text.indexOf(pattern, i)) != -1) { // Advance starting index. i += pattern.length(); // Increment count. count++; } return count; } public static void main(String[] args) { String value = "cat dog dog bird"; // Test method on these strings. int count = countStringOccurrences(value, "dog"); System.out.println("dog occurs: " + count); System.out.println("dirt occurs: " + countStringOccurrences(value, "dirt")); System.out.println("bird occurs: " + countStringOccurrences(value, "bird")); System.out.println("[ d] occurs: " + countStringOccurrences(value, " d")); } }
dog occurs: 2 dirt occurs: 0 bird occurs: 1 [ d] occurs: 2
Some details. There are some subtle details in the countStringOccurrences method. We increment the variable "i" the length of the pattern on a match.
And This step reduces unnecessary searching. It also means overlapping patterns are skipped.
Warning To find overlapping patterns within the source string, please change the method to increment "i" by 1.
Performance. For optimal performance, a Boyer-Moore string search algorithm could be applied here. And sometimes we can adjust programs so that no searching is needed.
A review. This method counts occurrences of a string in another string. No count() method is available on String in Java. This method can be helpful when one is needed.
Dot Net Perls is a collection of pages with code examples, which are updated to stay current. Programming is an art, and it can be learned from examples.
Donate to this site to help offset the costs of running the server. Sites like this will cease to exist if there is no financial support for them.
Sam Allen is passionate about computer languages, and he maintains 100% of the material available on this website. He hopes it makes the world a nicer place.
This page was last updated on Nov 8, 2023 (edit).
Home
Changes
© 2007-2025 Sam Allen