Home > Backend Development > C++ > How Can I Find All Occurrences of a Substring within a Larger String in C#?

How Can I Find All Occurrences of a Substring within a Larger String in C#?

Barbara Streisand
Release: 2024-12-28 22:52:15
Original
675 people have browsed it

How Can I Find All Occurrences of a Substring within a Larger String in C#?

Finding All Substring Positions in a Larger String in C#

When working with large strings, locating all instances of a specific substring can be crucial for parsing and data analysis. This article addresses the challenge of finding all such instances and storing their indexes in a list.

Problem Statement

You have a large string that you need to analyze. Within this string, you need to identify and store the positions of every occurrence of a specific substring. Let's assume the example string is "extract"(me,i-have lots. of]punctuation." You wish to find all occurrences of this substring within the larger string and add their indexes to a list.

Resolution

Method 1:

The IndexOf method in C# can be used to locate the first occurrence of a substring. However, to find all occurrences, we need to use a loop to iterate through the string and continue searching until no more instances are found.

This technique can be improved by using an extension method to make the code more concise. Here's an example extension method:

public static List<int> AllIndexesOf(this string str, string value) {
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    List<int> indexes = new List<int>();
    for (int index = 0;; index += value.Length) {
        index = str.IndexOf(value, index);
        if (index == -1)
            return indexes;
        indexes.Add(index);
    }
}
Copy after login

Method 2:

Alternatively, an iterator can also be used to yield the indexes sequentially:

public static IEnumerable<int> AllIndexesOf(this string str, string value) {
    if (String.IsNullOrEmpty(value))
        throw new ArgumentException("the string to find may not be empty", "value");
    for (int index = 0;; index += value.Length) {
        index = str.IndexOf(value, index);
        if (index == -1)
            break;
        yield return index;
    }
}
Copy after login

Both these methods can be easily added to any string object, making it convenient to find all substring positions. For instance, the following line would find all occurrences of substring "foo" within the string "fooStringfooBar":

List<int> indexes = "fooStringfooBar".AllIndexesOf("foo");
Copy after login

The above is the detailed content of How Can I Find All Occurrences of a Substring within a Larger String in C#?. For more information, please follow other related articles on the PHP Chinese website!

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Latest Articles by Author
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template