I need to be able to say something like myString.IndexOf(c => !Char.IsDigit(c)), but I can't find any such method in the .NET framework. Did I miss something?

The following works, but rolling my own seems a little tedious here:

using System;

class Program
{
    static void Main()
    {
        string text = "555ttt555";
        int nonDigitIndex = text.IndexOf(c => !Char.IsDigit(c));
        Console.WriteLine(nonDigitIndex);
    }
}

static class StringExtensions
{
    public static int IndexOf(this string self, Predicate<char> predicate)
    {
        for (int index = 0; index < self.Length; ++index) {
            if (predicate(self[index])) {
                return index;
            }
        }
        return -1;
    }
}
Edit
Report