如何查找不在列表中的字符串中的第一个char的索引

BCS*_*BCS 1 c# string search

我知道我可以遍历字符串或构建正则表达式或反转集合(毕竟ASCII不是那么大)并搜索第一个实例,但是Yuck.

我正在寻找的是一个漂亮的衬垫.

更少的功能更好,LINQ出局了(对我来说,不要问,这是一个长篇故事)


我要去的解决方案(除非我看到更好的东西)

static int FirstNotMeta(int i, string str)
{
    for(; i < str.Length; i++)
        switch(str[i])
        {
            case '\\':
            case '/':
            case '.':
                continue;
            default:
                return i;
        }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

好吧,我作弊,我事先知道我关心的是什么char.

Jef*_*f B 7

这有效:

public static char FindFirstNotAny(this string value, params char[] charset)
{
    return value.TrimStart(charset)[0];
}
Run Code Online (Sandbox Code Playgroud)