C# , 删除字符串中指定字符的几种方法

方法一,String.Replace

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

方法二, String.Aggregate

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

方法三,Regex.Replace

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

方法四,Char Array

string s = "abc";
int len = s.Length;
char[] s2 = new char[len];
int i2 = 0;
for (int i = 0; i < len; i++)
{
    char c = s[i];
    if (c != '\r' && c != '\n' && c != '\t')
        s2[i2++] = c;
}
return new String(s2, 0, i2);

方法五,String.Concat

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

方法六,unsafe char pointer

public static unsafe string StripTabsAndNewlines(string s)
    {
        int len = s.Length;
        char* newChars = stackalloc char[len];
        char* currentChar = newChars;

        for (int i = 0; i < len; ++i)
        {
            char c = s[i];
            switch (c)
            {
                case '\r':
                case '\n':
                case '\t':
                    continue;
                default:
                    *currentChar++ = c;
                    break;
            }
        }
        return new string(newChars, 0, (int)(currentChar - newChars));
    }

从性能角度来看,方法六(Char Pointer)最好,然后是方法四(Char Array),并且与Char Pointer相差不大。个人感觉Char Array是最值得使用的方法。 
第二阵营是方法五String.Concat,与方法六和方法四已经有较大的差距了。 
而方法一String.Replace和方法二String.Aggregate则性能更差一筹。 
最弱的就是Regex.Replace,性能垫底。
--------------------- 
作者:alvachien 
来源:CSDN 
原文:https://blog.csdn.net/alvachien/article/details/52438370 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值