首页 > 后端开发 > C++ > 如何最有效地从 C# 字符串中删除特殊字符?

如何最有效地从 C# 字符串中删除特殊字符?

Barbara Streisand
发布: 2024-12-29 20:22:12
原创
662 人浏览过

How Can I Most Efficiently Remove Special Characters from Strings in C#?

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

您当前从字符串中删除特殊字符的方法可能看起来效率低下,但它是实际上是更有效的方法之一。可以通过使用本地字符变量或枚举器来减少数组访问来进行优化。提供的代码提供了此改进:

public static string RemoveSpecialCharacters(string str) {
   StringBuilder sb = new StringBuilder();
   foreach (char c in str) {
      if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') || c == '.' || c == '_') {
         sb.Append(c);
      }
   }
   return sb.ToString();
}
登录后复制

性能比较

基准测试证实了改进方法的效率。以下是不同方法的结果,在 24 个字符的字符串上运行每个函数一百万次:

  • 原始函数:54.5 毫秒
  • 改进的函数:47.1 毫秒
  • 正则表达式:294.4 ms

正则表达式替代

正则表达式也可以用于此任务,但它们比简单的字符串操作慢得多。这是一个示例:

public static string RemoveSpecialCharactersRegex(string str) {
   return Regex.Replace(str, @"[^0-9a-zA-Z\._]", "");
}
登录后复制

查找表优化

另一个有效的解决方案涉及为允许的字符创建查找表:

private static bool[] _lookup;

static Program() {
   _lookup = new bool[65536];
   for (char c = '0'; c <= '9'; c++) _lookup[c] = true;
   for (char c = 'A'; c <= 'Z'; c++) _lookup[c] = true;
   for (char c = 'a'; c <= 'z'; c++) _lookup[c] = true;
   _lookup['.'] = true;
   _lookup['_'] = true;
}

public static string RemoveSpecialCharactersLookup(string str) {
   char[] buffer = new char[str.Length];
   int index = 0;
   foreach (char c in str) {
      if (_lookup[c]) {
         buffer[index] = c;
         index++;
      }
   }
   return new string(buffer, 0, index);
}
登录后复制

This该方法在执行速度方面优于原始方法和改进方法,但代价是初始化和维护大型查找表记忆中。

以上是如何最有效地从 C# 字符串中删除特殊字符?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板