Effizienteste Methode zum Entfernen von Sonderzeichen aus einer Zeichenfolge

Ich möchte alle Sonderzeichen aus einer Zeichenfolge entfernen. Zulässige Zeichen sind A – Z (Groß- oder Kleinbuchstaben), Zahlen (0–9), Unterstriche (_) oder das Punktzeichen (.).

Ich habe folgendes, es funktioniert, aber ich vermute (ich weiß!), Es ist nicht sehr effizient:

    public static string RemoveSpecialCharacters(string str)
    {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < str.Length; i++)
        {
            if ((str[i] >= '0' && str[i] <= '9')
                || (str[i] >= 'A' && str[i] <= 'z'
                    || (str[i] == '.' || str[i] == '_')))
                {
                    sb.Append(str[i]);
                }
        }

        return sb.ToString();
    }

Was ist der effizienteste Weg, um dies zu tun? Wie würde ein regulärer Ausdruck aussehen und wie verhält er sich zur normalen Manipulation von Zeichenfolgen?

Die zu bereinigenden Zeichenfolgen sind eher kurz und in der Regel zwischen 10 und 30 Zeichen lang.

Antworten auf die Frage(23)

Ihre Antwort auf die Frage