<p>I know I can loop over the string or build a regex or invert the set (ASCII isn't that big after all) and search for the first instance of that, but Yuck.</p>

<p>What I'm looking for is a nice one liner.</p>

<p>fewer features is better, LINQ is out (for me, don't ask, it's a <em>long</em> story)</p>

<hr>

<p>The solution I'm going with (unless I see something better)</p>

<pre><code>static int FirstNotMeta(int i, string str)
{
    for(; i &lt; str.Length; i++)
        switch(str[i])
        {
            case '\\':
            case '/':
            case '.':
                continue;
            default:
                return i;
        }
    return -1;
}
</code></pre>

<p>OK, I cheated, I know in advance what char's I care about.</p>

Not all that efficient, but:
```
```
char f(string str, IEnumerable<char> list)
{
  return str.ToCharArray().First(c => !list.Contains(c))
}
```
```