我想从字符串中删除所有特殊字符。允许的字符是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个字符之间。
3 回答
牧羊人nacy
TA贡献1862条经验 获得超7个赞
我建议创建一个简单的查找表,您可以在静态构造函数中对其进行初始化,以将任意字符组合设置为有效。这使您可以快速进行一次检查。
编辑
另外,为了提高速度,您将需要将StringBuilder的容量初始化为输入字符串的长度。这将避免重新分配。这两种方法共同为您提供速度和灵活性。
另一个编辑
我认为编译器可能会对其进行优化,但是考虑到样式和效率,我建议使用foreach而不是for。
- 3 回答
- 0 关注
- 524 浏览
添加回答
举报
0/150
提交
取消