方法一,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
版权声明:本文为博主原创文章,转载请附上博文链接!