Finding multiple indexes from source string

后端 未结 4 1600
眼角桃花
眼角桃花 2021-01-12 21:23

Basically I need to do String.IndexOf() and I need to get array of indexes from the source string.

Is there easy way to get array of indexes?

Before asking t

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2021-01-12 22:00

    How about this extension method:

    public static IEnumerable IndexesOf(this string haystack, string needle)
    {
        int lastIndex = 0;
        while (true)
        {
            int index = haystack.IndexOf(needle, lastIndex);
            if (index == -1)
            {
                yield break;
            }
            yield return index;
            lastIndex = index + needle.Length;
        }
    }
    

    Note that when looking for "AA" in "XAAAY" this code will now only yield 1.

    If you really need an array, call ToArray() on the result. (This is assuming .NET 3.5 and hence LINQ support.)

提交回复
热议问题