String Occurrence MethodCount occurrences of a string within another string. Use a while-loop and indexOf.
This page was last reviewed on May 21, 2023.
String occurrences. A string may occur many times within another string. We can count these occurrences with a while-loop and the indexOf method.
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.
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 tested code examples. Pages are continually updated to stay current, with code correctness a top priority.
Sam Allen is passionate about computer languages. In the past, his work has been recommended by Apple and Microsoft and he has studied computers at a selective university in the United States.
This page was last updated on May 21, 2023 (edit).
© 2007-2023 Sam Allen.