using System;
class FindOccurrences
{
/*
Find all starting indices of a word inside a larger text.
This function uses String.IndexOf in a loop. The method is efficient
and implemented in optimized native code, making it ideal for substring search.
*/
static void FindAllOccurrences(string text, string word)
{
if (string.IsNullOrEmpty(word)) {
return; // Searching for an empty word is meaningless
}
int index = text.IndexOf(word); // First occurrence
while (index != -1) {
Console.WriteLine(index); // Print the index
/*
Search again starting one character after the previous match.
This allows detection of overlapping matches.
*/
index = text.IndexOf(word, index + 1);
}
}
static void Main()
{
string text =
"the quick brown fox jumps over the lazy dog. the fox is clever.";
string word = "the";
Console.WriteLine("Text: " + text);
Console.WriteLine("Word: \"" + word + "\"");
Console.WriteLine();
Console.WriteLine("Occurrences at indices:");
FindAllOccurrences(text, word);
}
}
/*
run:
Text: the quick brown fox jumps over the lazy dog. the fox is clever.
Word: "the"
Occurrences at indices:
0
31
45
*/