HomeSearch

Java String Occurrence Method: While Loop Method

This Java method counts occurrences of a string within another string. It uses a while-loop and indexOf.
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."

Main: Here we test the countStringOccurrences method. We can check the results with a sample string.

Java program that counts string occurrences 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")); } } Output 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.

Caution: 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.
© 2007-2019 Sam Allen. Every person is special and unique. Send bug reports to info@dotnetperls.com.
Home
Dot Net Perls