本文基于Stackoverflows上以下几个Question:
Fastest way to remove chars from string (http://stackoverflow.com/questions/2182459/fastest-way-to-remove-chars-from-string)
More efficient way to remove special characters from string (http://stackoverflow.com/questions/1120198/most-efficient-way-to-remove-special-characters-from-string)

方法一,String.Replace

  1. str = str.Replace("\r", string.Empty).Replace("\n", string.Empty).Replace("\t", string.Empty);

方法二, String.Aggregate

  1. string[] split = str.Split(new char[] { '\t', '\r', '\n' }, StringSplitOptions.None);
  2. str = split.Aggregate<string>((str1, str2) => str1 + str2);

方法三,Regex.Replace

  1. str = Regex.Replace(str, "[\r\n\t]", string.Empty, RegexOptions.Compiled);

方法四,Char Array

  1. string s = "abc";
  2. int len = s.Length;
  3. char[] s2 = new char[len];
  4. int i2 = 0;
  5. for (int i = 0; i < len; i++)
  6. {
  7. char c = s[i];
  8. if (c != '\r' && c != '\n' && c != '\t')
  9. s2[i2++] = c;
  10. }
  11. return new String(s2, 0, i2);

方法五,String.Concat

  1. String.Concat(str.Split(new char[] { '\t', '\r', '\n' },
  2. StringSplitOptions.None));

方法六,unsafe char pointer

  1. public static unsafe string StripTabsAndNewlines(string s)
  2. {
  3. int len = s.Length;
  4. char* newChars = stackalloc char[len];
  5. char* currentChar = newChars;
  6. for (int i = 0; i < len; ++i)
  7. {
  8. char c = s[i];
  9. switch (c)
  10. {
  11. case '\r':
  12. case '\n':
  13. case '\t':
  14. continue;
  15. default:
  16. *currentChar++ = c;
  17. break;
  18. }
  19. }
  20. return new string(newChars, 0, (int)(currentChar - newChars));
  21. }

从性能角度来看,方法六(Char Pointer)最好,然后是方法四(Char Array),并且与Char Pointer相差不大。个人感觉Char Array是最值得使用的方法。
第二阵营是方法五String.Concat,与方法六和方法四已经有较大的差距了。
而方法一String.Replace和方法二String.Aggregate则性能更差一筹。
最弱的就是Regex.Replace,性能垫底。

是为之记。
Alva Chien
2016.9.5

C# VI: 删除字符串中指定字符的几种方法的更多相关文章

  1. python 统计字符串中指定字符出现次数的方法

    python 统计字符串中指定字符出现次数的方法: strs = "They look good and stick good!" count_set = ['look','goo ...

  2. 总结PHP删除字符串最后一个字符的三种方法

    一.前言 从数据库中select()读取一对多的信息时,经常需要将取出的数组用某个特定的字符分割,然后拼接成字符串. 常见的语法格式: foreach ($arr as $key => $val ...

  3. String空格删除和java删除字符串最后一个字符的几种方法

    1. String.trim()trim()是去掉首尾空格2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间复制代码 代码如下:Str ...

  4. PHP程序中删除字符串最后一个字符的三种方法

    常见的语法格式: foreach ($arr as $key => $value) {$arr_str = $arr['x_id'] . ',' . $arr_str;} 假设字符数组 $arr ...

  5. C++标准库删除字符串中指定字符,比如空格

    参见:https://zh.cppreference.com/w/cpp/algorithm/remove 使用 erase 和 remove 配合. #include <algorithm&g ...

  6. C#中删除字符串最后一个字符的几种方法

    转载地址 偶然看到的,记录一下,以免忘记 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法:    1.用的最多的是Su ...

  7. JS 删除字符串最后一个字符的几种方法

    字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法:1.用的最多的是Substring,这个也是我一直用的 s=s.Sub ...

  8. C#删除字符串最后一个字符的几种方法

    字符串:string s = "1,2,3,4,5,"目标:删除最后一个 "," 方法:1.用的最多的是Substring,这个也是我一直用的s = s.Sub ...

  9. java删除字符串最后一个字符的几种方法

    偶然看到的,记录一下,以免忘记 字符串:string s = "1,2,3,4,5," 目标:删除最后一个 "," 方法:    1.用的最多的是Substri ...

随机推荐

  1. 使用ipython %matplotlib inline

    首先讲讲这句话的作用,matplotlib是最著名的Python图表绘制扩展库,它支持输出多种格式的图形图像,并且可以使用多种GUI界面库交互式地显示图表.使用%matplotlib命令可以将matp ...

  2. 一张图一个题帮你迅速理解RLU算法

    下面是某年的软考题: 某进程页面访问序列为4,2,3,1,2,4,5,3,1,2,3,5,且开始执行时内存中没有页面,分配给该进程的物理块数是3,则采用RLU页面置换算法时的缺页率是多少? 对于这个问 ...

  3. 【干货系列之萌新知识点】python与变量和运算符

    一.注释 注释一行:# 为注释符 注释多行:'或者"为注释符 二.print输出 print()函数,作用是打印一些信息语屏幕上. 例如:print("hello world!&q ...

  4. Shiro:未登录时请求跳转问题

    问题:前后端分离项目,在用Shiro做权限控制时,未登录状态发送的请求都会重定向,导致前端无法捕捉重定向后的消息.如何不重定向在原来的请求返回信息提示未登录,前端根据信息调到登录页? 首先,看一下Sh ...

  5. windows下安装scoop

    scoop是windows下的包管理工具,类似与linux下的yum和python的pip. scoop可以在windows下方便的进行软件的管理,尤其是对开发者提供了很大的遍历. cmd下执行如下红 ...

  6. 1.在ubuntu中软件安装在哪里?

    ubuntu下安装软件有四种方式: 1.通过deb格式的离线软件包安装 sudo dpkg -i xxx.deb # 安装包,安装程序   -i: install sudo dpkg -r packa ...

  7. Class constructor FileManager cannot be invoked without 'new'

    bug:今天项目重新安装依赖打包的时候出现错误:Class constructor FileManager cannot be invoked without 'new' 解决:尝试了很多种解决方案, ...

  8. Nginx 热部署和日志切割,你学会了吗?

    上篇文章,我们已经安装好 Nginx,并且配置好 Nginx 文件后,这个时候我就需要操作 Nginx 的命令行了,这篇文章主要讲解 Nginx 命令行相关知识,并通过日常遇到的热部署.切割日志文件场 ...

  9. Text 尺寸获取

    获取text在当前文本内容下应该尺寸: 宽度:text.preferredWidth 高度:text.preferredHeight

  10. Linux系统运行级别和关机重启命令介绍

    Linux系统运行级别介绍 Linux系统有七种运行级别(Run Level),各个运行级别下,系统有不同的状态,各个级别的意义描述如下. 0:关键级别1:单用户运行级别,运行rc.sysinit和r ...