如何更快的删除String中的空格[未完]

 

背景:此文章主要源于网址[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。

相关网址:

时间: 2024-11-04 11:54:43

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

删除String中的空格

三种删除String中空格的方法.可用根据需要自由进行选择使用. 1.C风格 #include "stdafx.h" void RemoveStringSpaces(char* pStr); int _tmain(int argc, _TCHAR* argv[]) { return 0; } void RemoveStringSpaces(char* pStr) { int i = 0; // 'Copy to' index to string int j = 0; // 'Copy

String 中去掉空格

JAVA中去掉空格 1. String.trim() trim()是去掉首尾空格 2.str.replace(" ", ""); 去掉所有空格,包括首尾.中间 复制代码 代码如下:String str = " hell o "; String str2 = str.replaceAll(" ", ""); System.out.println(str2); 3.或者replaceAll(" +&q

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

create or replace procedure PROC_test is   --Description:删除字段中的指定字符(回车chr(13).换行chr(10))   --By LiChao   --Date:2016-03-01   colname varchar(20); --列名   cnt     number; --包含换行符的列的行数   v_sql   varchar(2000); --动态SQL变量begin   --读取表中的列   for col in (sel

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

使用string::iterator(字符串迭代器)从开始 str.begin() 迭代到最后 str.end() ,再使用string.erase(const_iterator p)函数来删除迭代器所指向的字符. #include <iostream> #include <string> using namespace std; int main() { string str; char ch; cin >> str; cin >> ch; string:

更快的理解js中循环嵌套

[循环控制语句] break语句:终止本层循环,继续执行循环后面的语句:(当循环有多层时,break只会跳出一层循环) continue语句:跳过本次循环,继续执行下次循环: (对于for循环,continue执行后,继续执行循环变量更新语句n++: 对于while, do while,continue执行后,继续执行循环条件,所以使用这两个循环,必须注意,continue一定要在n++之后): [嵌套循环题的特点] 外层循环控制行数,内层循环控制每行元素的个数: [做图形的思路步骤] 1.确定

String中的空格替换

思路: 1.将字符串转化为char数组: 2.创建一个StringBuilder对象: 3.对char数组遍历检测,逐一添加到StringBuiler对象中 .当检测到属于空格时,StringBuilder的append()添加替换内容. 4.返回StringBuilder对象的toString()对象 . public String replace(String string){ char [] a = string.toCharArray(); StringBuffer stringBuff

删除字符串中的空格(空字符)

C++中的字符串过滤空格(空字符),可以使用string自带的方法实现. 代码: #include<iostream> #include<string> using namespace std; /********************************************************** * *功能:去除字符串中的空字符 * *strSrc:源字符串 * *反回值:NONE * ***************************************

删除字符串中的空格

咋一看觉得很简单,其实自己做也花了些时间.同样,仅仅是删除空格并输出的话很简单.而将空格删除再存储字符串就没那么简单了. 首先,贴上删除空格并输出字符串的程序如下,比较简单,不多做介绍. /**************删除空格并打印***************/ void print_del_spac(char *p1) { while(*p1 != '\0') { if(*p1 != ' ') putchar(*p1); p1++; } putchar('\n'); } 其次,贴上删除空格并

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

//删除空格和回车 function trimall($str){ $qian=array(" "," ","\t","\n","\r"); return str_replace($qian, '', $str); } //多个连续空格只保留一个 function merge_spaces($string){ return preg_replace("/\s(?=\s)/","