ExtensionMethod.NET Home of 818 C#, Visual Basic, F# and Javascript extension methods

IndicesOf

Gets all the indexes in which a certain substring appears within the string.

Source

public static IEnumerable<int> IndicesOf(this string searchIn, string searchFor)
{
    if (string.IsNullOrEmpty(searchFor)) yield break;
    
    int lastLoc = searchIn.IndexOf(searchFor);
    while (lastLoc != -1)
    {
        yield return lastLoc;
        lastLoc = searchIn.IndexOf(searchFor, startIndex: lastLoc + 1);
    }
}

Example

[Test]
public void TestStringIndicesOf()
{
    CollectionAssert.AreEquivalent("babbab".IndicesOf("b"),  new[] { 0,2,3,5});
    CollectionAssert.AreEquivalent("babbab".IndicesOf("ba"), new[] { 0, 3 });
    CollectionAssert.AreEquivalent("babbab".IndicesOf("cgesahghts"), Enumerable.Empty<int>());
    CollectionAssert.AreEquivalent("babbab".IndicesOf(string.Empty), Enumerable.Empty<int>());
}

Author: Omer Raviv

Submitted on: 25 dec 2010

Language: C#

Type: System.String

Views: 2727