背景:此文章主要源于网址[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. Smallest Rectangle Enclosing Black Pixels

    An image is represented by a binary matrix with 0 as a white pixel and 1 as a black pixel. The black ...

  2. freemodbus-v1.5.0 源码分析

    注:转载请注明出处   http://www.cnblogs.com/wujing-hubei/p/5935142.html FreeModbus协议栈作为从机,等待主机传送的数据,当从机接收到一帧完 ...

  3. CentOS 7部署Kafka和Kafka集群

    CentOS 7部署Kafka和Kafka集群 注意事项 需要启动多个shell脚本交互客户端进行验证,运行中的客户端不要停止. 准备工作: 安装java并设置java环境变量,在`/etc/prof ...

  4. MongoDB 分片管理(不定时更新)

    背景: 通过上一篇的 MongoDB 分片的原理.搭建.应用 大致了解了MongoDB分片的安装和一些基本的使用情况,现在来说明下如何管理和优化MongoDB分片的使用. 知识点: 1) 分片的配置和 ...

  5. 20151130test->20160530

    过了6个月了,有些长进么?哈 go go go 开源镜像 http://mirrors.163.com/

  6. android学习————项目导入常见错误整理(转载)

    详细请访问http://4789781.blog.51cto.com/4779781/1031107

  7. 【leetcode】Happy Number(easy)

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  8. Hibernate单向多对一对象关系模型映射

    单向的many-to-one 案例: 班级和学生 父亲和子女 单向:只能由其中一方维护关系 Many-to-one中有many的一方法维护或者体现两者之间的关系. 单向的many-to-one描述学生 ...

  9. August 10th, 2016, Week 33rd, Wednesday

    The degree of loving is measured by the degree of giving. 爱的深浅是用给与的多少来衡量的. Some say that if you love ...

  10. !对c++类的理解

    c++的类可以分为两类,一种是entity的类(i.e.,实体类),一种是function的类(i.e.,功能类). 对于构造entity的类,包括这种entity的属性已经它本身具备的功能: 而fu ...