String
occurrence countA 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.
Here we introduce the countStringOccurrences
method. This method receives two parameters. It returns the count of one string
within another.
string
we want to search within. We name this argument "text."string
we want to find—the pattern within the first string
. We name this argument "pattern."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
There are some subtle details in the countStringOccurrences
method. We increment the variable "i" the length of the pattern on a match.
string
, please change the method to increment "i" by 1.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.
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.