
This is the Title of the Book, eMatter Edition
Copyright © 2007 O’Reilly & Associates, Inc. All rights reserved.
Finding the Location of All Occurrences of a String Within Another String
|
43
number of matches that can be made in the source string. If this check indicates that
you are able to keep this match, it is stored in the
occurrences List<int>.
2.5 Finding the Location of All Occurrences
of a String Within Another String
Problem
You need to search a string for every occurrence of a specific string. In addition, the
case sensitivity, or insensitivity, of the search needs to be controlled.
Solution
Using IndexOf or IndexOfAny in a loop, you can determine how many occurrences of
a character or string exist as well as their locations within the string. To find each
occurrence of a string in another string using a case-sensitive search, use the follow-
ing code:
using System;
using System.Collections;
using System.Collections.Generic;
public static int[] FindAll(string matchStr, string searchedStr, int startPos)
{
int foundPos = -1; // -1 represents not found.
int count = 0;
List<int> foundItems = new List<int>( );
do
{
foundPos = searchedStr.IndexOf(matchStr, startPos);
if (foundPos > -1)
{
startPos = foundPos + 1;
count++;
foundItems.Add(foundPos);
Console.WriteLine("Found item at position: " + foundPos.ToString( ));
}
} while (foundPos > -1 && startPos < searchedStr.Length);
return ((int[])foundItems.ToArray( ...