背景:此文章主要源于网址[1]所描述的,文中大部分方法亦是[1]中实现的。

下面介绍集中删除空格的方法:

方法1:按空格分割后再拼接

 /// <summary>
/// 按空格分割后拼接——Join
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TrimAllWithSplitAndJoin(string str)
{
return string.Join("", str.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries));
} /// <summary>
/// 按空格分割后拼接——Concat
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TrimAllWithSplitAndConcat(string str)
{
return string.Concat(str.Split(default(string[]), StringSplitOptions.RemoveEmptyEntries));
}

方法2:利用Linq一个一个字符拼接【注:[1]网址中对IsWhiteSpace还做了优化】

 /// <summary>
/// 利用Linq一个一个字符拼接
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TrimAllWithLinq(string str)
{
return new string(str.Where(c => !char.IsWhiteSpace(c)).ToArray());
}

方法3:利用正则表达式替换空格为空字符——看起来比较高大上【注:[1]网址中将Regex的实例化放到了方法外以减少实例化时间】

/// <summary>
/// 利用正则表达式替换空格为空字符
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TrimAllWithRegex(string str)
{
Regex whitespace = new Regex(@"\s+", RegexOptions.Compiled);
return whitespace.Replace(str, "");
}

方法4:自己实现使用字符数组一个一个拼接

/// <summary>
/// 自己实现一个字符一个字符拼接
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TrimAllWithCharArray(string str)
{
int len = str.Length;
char[] strTochars = str.ToCharArray();
int index = 0;
for (int i = 0; i < len; i++)
{
char ch = strTochars[i];
if (!char.IsWhiteSpace(ch))
strTochars[index++] = ch;
}
return new string(strTochars, 0, index);
}

 

方法5:利用String自带方法Replace替换【注:[1]网址中提到了此法其实是有缺陷的】

 /// <summary>
/// 使用String的Replace功能替换
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string TrimAllWithStringReplace(string str)
{
return str.Replace(" ", "");
}

 

关于性能测试准备使用老赵的CodeTimer。

相关网址:

如何更快的删除String中的空格[未完]的更多相关文章

  1. String 中去掉空格

    JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 ...

  2. JS中删除字符串中的空格

    问题描述:         在进行字符串操作时,由于字符串中存在较多的空格,因此需要考虑取消字符串中的空格 问题解决:       (1)删除字符串中的前导空格(字符串的前面的空格): 注意:这里使用 ...

  3. oracle删除字段中的空格、回车及指定字符

    create or replace procedure PROC_test is --Description:删除字段中的指定字符(回车chr(13).换行chr(10)) --By LiChao - ...

  4. js 删除字符串中所有空格

    //去除头尾和中间空格,制表符 function trimSpaces(Str){               var ResultStr = "";               ...

  5. 【c++】删除string中指定的字符

    使用string::iterator(字符串迭代器)从开始 str.begin() 迭代到最后 str.end() ,再使用string.erase(const_iterator p)函数来删除迭代器 ...

  6. 更快的理解js中循环嵌套

    [循环控制语句] break语句:终止本层循环,继续执行循环后面的语句:(当循环有多层时,break只会跳出一层循环) continue语句:跳过本次循环,继续执行下次循环: (对于for循环,con ...

  7. PHP删除字符串中的空格和换行符 将字符串中的连续多个空格转换为一个空格

    //删除空格和回车 function trimall($str){ $qian=array(" "," ","\t","\n&qu ...

  8. Python删除列表中的空格

    list1 = ['122','2333','3444',' ','422',' ',' ','54',' '] list1=[x.strip() for x in list1 if x.strip( ...

  9. 字符串的查找删除---C++中string.find()函数与string::npos

    给定一个短字符串(不含空格),再给定若干字符串,在这些字符串中删除所含有的短字符串 输入: 输入只有一组数据 输入一个短字符串(不含空格),再输入若干字符串直到文件结束为止 输出: 删除输入的短字符串 ...

随机推荐

  1. CentOS 下安装xdebug

    在CentOS 6.x 的系统中,是集成xdebug 的, yum install PHP-pecl-xdebug 如果是CentOS.5 也可能通过安装安装 epel 来安装 rpm -ivh ht ...

  2. MQTT协议(一)

    MQTT(Message Queue Telemetry Transport),遥测传输协议,提供订阅/发布模式,更为简约.轻量,易于使用,针对受限环境(带宽低.网络延迟高.网络通信不稳定),可以简单 ...

  3. poj 1562

    这道题主要注意输入的问题,以及对周围搜索时的注意,要使用递归,多次调用,附上一组数据 11 20*@*@*@@@**@*@**@@@*****@*@*@*@*@****@**@*@*@*@*@*@*@ ...

  4. VMware Workstation 下进行 桥连接

    大家都知道进行桥连接的时候,需要我们的宿主机与虚拟机同处于一个网络段, 使得mask与默认网关相同即可进行连接 ; 本地的IP .掩码 . 网关: 虚拟机的Ip 掩码,网关: // 当然这里的DNS ...

  5. Light OJ 1068

    数位DP #include <cstdio> #include <cstring> using namespace std; ; ; long long n; int f[MA ...

  6. BM算法和Sunday快速字符串匹配算法

    BM算法研究了很久了,说实话BM算法的资料还是比较少的,之前找了个资料看了,还是觉得有点生涩难懂,找了篇更好的和算法更好的,总算是把BM算法搞懂了. 1977年,Robert S.Boyer和J St ...

  7. iScroll.js 用法参考 (share)

    分享是传播.学习知识最好的方法 以下这篇文章是iScroll.js官网的中文翻译,尽管自己英文不好,但觉得原作者们翻译的这个资料还是可以的,基本用法介绍清楚了.如果你英文比较好的话,可以看看官网的资料 ...

  8. 【linux】学习1

    郁闷啊 好多东西要学 下面大概就是鸟哥那本书的第五章内容吧 linux命令: Ctrl + Alt + F1 ~ F6 : 切换终端 ls  -al  ~ :显示主文件夹下的所有隐藏文件 date: ...

  9. 20145213《Java程序设计》第一周学习总结

    20145213<Java程序设计>第一周学习总结 教材学习内容总结 期待了一个寒假,终于见识到了神秘的娄老师和他的Java课.虽说算不上金风玉露一相逢,没有胜却人间无数也是情理之中,但娄 ...

  10. Oracle、SQL Server、MySQL数据类型对比

    1,标准SQL数据类型 BINARY 每个字符占一个字节 任何类型的数据都可存储在这种类型的字段中.不需数据转换(例如,转换到文本数据).数据输入二进制字段的方式决定了它的输出方式. BIT 1 个字 ...