8.11. Finding a Particular Occurrence of a Match
Problem
You need to find a specific occurrence of a match within a string. For example, you want to find the third occurrence of a word or the second occurrence of a Social Security Number. In addition, you may need to find every third occurrence of a word in a string.
Solution
To find a particular occurrence of a match
in a string, simply subscript the array returned from
Regex.Matches
:
public static Match FindOccurrenceOf(string source, string pattern, int occurrence) { if (occurrence < 1) { throw (new ArgumentException("Cannot be less than 1", "occurrence")); } // Make occurrence zero-based --occurrence; // Run the regex once on the source string Regex RE = new Regex(pattern, RegexOptions.Multiline); MatchCollection theMatches = RE.Matches(source); if (occurrence >= theMatches.Count) { return (null); } else { return (theMatches[occurrence]); } }
To find each particular occurrence of a match in a string, build an
ArrayList
on the fly:
public static ArrayList FindEachOccurrenceOf(string source, string pattern, int occurrence) { ArrayList occurrences = new ArrayList( ); // Run the regex once on the source string Regex RE = new Regex(pattern, RegexOptions.Multiline); MatchCollection theMatches = RE.Matches(source); for (int index = (occurrence - 1); index < theMatches.Count; index += occurrence) { occurrences.Add(theMatches[index]); } return (occurrences); }
The following method shows how to invoke the two previous methods:
public static ...
Get C# Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.