猿问

从字符串中删除特殊字符的最有效方法

我想从字符串中删除所有特殊字符。允许的字符是AZ(大写或小写),数字(0-9),下划线(_)或点号(。)。


我有以下内容,它可以工作,但是我怀疑(我知道!)它不是很有效:


    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();

    }

最有效的方法是什么?正则表达式是什么样子?与普通的字符串操作相比如何?


将要清理的字符串会很短,通常长度在10到30个字符之间。


千万里不及你
浏览 526回答 3
3回答

牧羊人nacy

我建议创建一个简单的查找表,您可以在静态构造函数中对其进行初始化,以将任意字符组合设置为有效。这使您可以快速进行一次检查。编辑另外,为了提高速度,您将需要将StringBuilder的容量初始化为输入字符串的长度。这将避免重新分配。这两种方法共同为您提供速度和灵活性。另一个编辑我认为编译器可能会对其进行优化,但是考虑到样式和效率,我建议使用foreach而不是for。
随时随地看视频慕课网APP
我要回答