1. 首页>百科大全 > 百科

怎么把字符串里的空格去掉

作者:张楠林
2020-05-01
百科

1.

要是你想去前后的空格可以用trim(str:string),要是你想去掉中间的我觉得需要做循环。

不知道别人有没有高招。、var str:arrary[1..100]:string; i,num,j:integer; begin num:=100; for i:=0 to num do begin if str[i]=' ' then for j:=i to num do begin str[j]:=str[j+1]; end; num:=num-1; end;end;。

2. string怎么去掉字符串里面的所有空格

JAVA中去掉空格

1. String.trim()

trim()是去掉首尾空格

2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间

复制代码 代码如下:String str = " hell o ";

String str2 = str.replaceAll(" ", "");

System.out.println(str2);

3.或者replaceAll(" +",""); 去掉所有空格

4.str = .replaceAll("s*", "");

可以替换大部分空白字符, 不限于空格

s 可以匹配空格、制表符、换页符等空白字符的其中任意一个 您可能感兴趣的文章:java去除字符串中的空格、回车、换行符、制表符的小例子

3. 如何去掉字符串或变量里的空格

这是今天无意看到的一个字符串处理小问题。详细点说,假设有这么一个字符串char str[]=" hello world !! ! "现在需要实现一个算法ClearSpace来去除这个字符串中的所有空格。即最后的str应为"helloworld!!!"函数声明如下void ClearSpace(char *str)要求:不用其他变量,只能用形参str。也不准用正则表达式。其实这个算法还有些深度。不用些巧妙的方法似乎很难解决。刚刚拿到这个问题的时候,大部分人都会这么思考:要去掉空格,就是找到空格的位置,然后将后面的字符整体往前移动以填补这些个空格。但是关键在于只能用str这一个指针变量。如何办到呢?首先可以试试一般思路,如果用三个左右的变量这个问题将会非常容易解决,因为我们需要一些标志指针,记住某些位置。比如说:定位到第一个空格的位置,将其指针保存到p中,然后在找到p后面第一个不为空格的字符,将其指针保存到q,以p为起点,来个整体移动,便可将p和q之间的空格消灭。目前的状况只有一个指针str,还是用上面的思路的话将无解。第一个思路实则可以给我们些提示,就是说,我们需要“记忆”,什么“记忆”?不论如何,我们需要知道两个信息,一个从哪儿开始移动,二是移到哪儿。显然,一个str变量是做不到这一点的,但是我们可以借用c语言的特性来完成这项工作。那这个特性究竟是什么呢?没错,就是递归!递归实际上就是利用栈的特性解决问题,而栈是由系统内部处理的,并且具有“记忆”的特性,所以很适合这个算法。当然上述分析只是一个感性些的认识,不是说,这类问题就一定要用栈或者递归来解决。好了,我们决定用递归完成这个算法,但是具体怎么做呢?去除字符串的问题实际上是一个递归的过程。何解?首次调用ClearSpace函数的时候,实际上就表明了我们解决问题的对象是以str为开头的字符串。这是最开始的母串,源串。那么划分下去,还有众多的小问题。也就是说,我们将递归的解决子串的问题。子串是相互嵌套的关系。首先,定位到第一个空格的位置,然后递归的解决后续的各个子串的去除空格的问题。之后,再把后面已经去除空格的子串整体往前移动一个位子,也就是填补当前的空格。根据这个思路,算法描述如下:void ClearSpace(char* str){while(*str && *str++ != ' ' ); //找到第一个为空格的位置str

if( !*str ) return ; //如果到了字符串尾,返回

else ClearSpace(str); //否则就是找到了为空格的位置。接着,从该空格的后一位置起,递归的去除空格

while( (*(str-1) = *str++)!='' ); //str后续的空格解决ok了,还要将后续的子串往前移动一格,以填补当前空格str

}这个算法实现效率并不算高,递归的大量调用不仅本身会耗费时间,而且也会耗费栈空间,另外,频繁的移动字符也是不可避免。但是至少给出了一种实现吧。由此看来,递归的思路无处不在,哪怕是遇到这类很小的问题。往往,我们要么不知道去利用递归解决问题,要么不会实现具体的递归。在常用的各种搜索,回溯法,分治法等算法中,递归可谓是最重要的一环,所以即便递归会耗费时间空间,但对于简化解决问题的思路而言是具有重大作用的。要学算法,先学好递归!也许这个主题已经有人探讨过,或大家还能给出更好的方案。不过我相信肯定还有些和我一样的初学者并未接触过这个问题,所以写此文,以飨同我一样的初学者。

4. 如何去掉字符串中的空格(转)

1. 写在前面的事情的起因是这样的,我要处理一段这样的程序,用户可以以任意的形式输入11位数字+空格的形式,然后我要把他分成434的格式。

然后想到的办法是: 去掉所有空格,然后按照规则划分成数组,然后再输出。那么怎么样去掉空格,常规的方法这么几个:A. String.Replace()B. String.Split(new char[]{''},StringSplitOptions.RemoveEmptyEntries);C. System.Text.Regex()来进行正则替换D. 有人提出用StringBuilder,但是我们永远不要忘记StringBuilder的临界值,在小数据的情况下,使用StringBuilder反而是得不偿失的。

2. 性能大比拼毋容置疑,使用正则一定是最慢的办法,再次不做演示。首先贴出测试代码:static void Main(string[] args) { Stopwatch sw = new Stopwatch(); string sTemp = "11 1241 111 11 "; string sTest = String.Empty; for (int i = 0; i < 1000; i++) { sTest += sTemp; } sw.Start(); for (int i = 0; i < 1000; i++) { sTest.Replace(" ", ""); } sw.Stop(); Console.Write("使用Replace所消耗的时间:"); Console.WriteLine(sw.ElapsedMilliseconds.ToString()); sw.Reset(); sw.Start(); for (int i = 0; i < 1000; i++) { sTest.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); } sw.Stop(); Console.Write("使用Split所消耗的时间:"); Console.WriteLine(sw.ElapsedMilliseconds.ToString()); }接下来是测试结果:正如我们意料中的一样,Replace的效率一定要比Split高的,猜测的理由其实很简单,Replace的作用就是用来替换字符,而Split是用来拆分,这里属于典型的方法乱用。

扩展阅读: 《.NET,你忘记了么?(八)——从dynamic到特性误用》3. 谈谈String.Split()我没有办法看到String.Replace()源码,那么在这里就只说说String.Split()。大致代码可以通过Reflector看到,这里只粘贴出核心的代码:public string[] Split(string[] separator, int count, StringSplitOptions options) { bool flag = options == StringSplitOptions.RemoveEmptyEntries; int[] sepList = new int[this.Length]; int[] lengthList = new int[this.Length]; int numReplaces = this.MakeSeparatorList(separator, ref sepList, ref lengthList); if ((numReplaces == 0) || (count == 1)) { return new string[] { this }; } if (flag) { return this.InternalSplitOmitEmptyEntries(sepList, lengthList, numReplaces, count); } return this.InternalSplitKeepEmptyEntries(sepList, lengthList, numReplaces, count); } 首先我们来关注下MakeSeparatorList方法,在这个方法里,微软通过遍历分隔符数组和字符串,两层for循环,得到了字符串中,每个分隔符所在的索引。

接下来就是根据索引来直接分割字符串了,无需赘言。4. 算法分析从上面的代码,我们可以很轻松地看出,算法的时间复杂度是O(M*N),那么我们有没有更优的算法来实现他呢?首先,我们要看到算法的时间复杂度瓶颈在于MakeSeparatorList方法,那就来优化这个方法,实现如下:private static bool[] MakeSeparatorList(char[] separatorArray) { bool[] charArray = new bool[255]; for (int i = 0; i < separatorArray.Length; i++) { charArray[separatorArray[i]] = true; } return charArray; } 那么之后我们就可以在遍历字符串的时候,直接通过每个字符的ASC2码来得到这个字符是否是分隔符了。

5. 算法优劣既然这样的算法时间复杂度小,那为什么微软不采用这样的算法呢?时间复杂度并不能决定算法的优劣,我们所谓的指数型,对数型还是ON级,都是针对当数据量大幅度增长时。但是在此问题中,分隔符只有1个,我们却需要为这一个字符去声明一个大小为255的bool型数组,这在空间复杂度上是很得不偿失的。

那么该算法适合什么?该算法适合当分隔符具有多个,字符串也很长时,那么O(N)就远远小于O(M*N)了。6. 写在最后好久没有写东西了,以至于写写自己已经不知道自己在写什么了。

东西写得乱七八糟,算了算了…….只是警醒自己,也警醒各位,.NET framework为我们提供了大量的类库方法支持,但是在用一个方法之前,我们是否该把这个方法搞清楚,这个方法是否是最优的方法,我们是该自己重新写一个方法,还是……追本溯源,这才是程序员该做的。

5. 如何删除中文字符串中的空格

楼主看我写的函数,把字符串a和串长度传递进去就可以了,具体思想就是搜索整个a串,遇到空格字符,就把这个字符删掉 ,后面的字符往前挪一位。

========================================================

void delete(char *a,int size)

{

int i=0,j=0;

for(i=0;i<size;i++)

if(a[i]==' ')

{

for(j=i;j<size;j++)

a[j]=a[j+1];

}

}

6. 如何删除字符串中间的空格

JAVA中去掉空格

1. String.trim()

trim()是去掉首尾空格

2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间

复制代码 代码如下:String str = " hell o ";

String str2 = str.replaceAll(" ", "");

System.out.println(str2);

3.或者replaceAll(" +",""); 去掉所有空格

推荐阅读
  • 努比亚z9max手机音乐效验

    该机拥有HIFI级音乐芯片,音乐效果不凡。具体体现在:1.音量调节,正常听音乐中高低音都是一个音量,而杜比音效能动态扩大某个音量。比如放打鼓声,杜比会及时提高低音加强鼓声。2.加强音域,杜比音效有开阔、集中、…

    百科 2024-09-21
  • 是atChristmas还是inChristmas

    此处该用“on”。在圣诞节正确表达应为 “on Christmas ”。有具体日期的,比如知道几月几日的都用“on” ;不知道日期,但知道年份和月份的用“in” ,知道具体时间,比如几点几分用“at”。…

    百科 2024-09-21
  • 个体工商户应交纳什么税

    纳税标准根据国家税务总局《个体工商户定期定额征收管理办法》文件精神 ,定期定额征收方式适用的税种及税率如下:1、根据《中华人民共和国增值税暂行条例》规定,自2009年1月1日起,小规模纳税人增值税征收率为3%…

    百科 2024-09-21
  • 材料成本差异率为负数是什么意思

    材料成本差异额,是指材料的实际成本和计划成本之间的差额。差异率负数表示节约差异,即实际成本比计划成本小。正数表示超支差异,即实际成本比计划成本大。…

    百科 2024-09-21
  • 塞翁失马焉知非福是什么意思

    比喻一时虽然受到损失,反而因此能得到好处。也指坏事在一定条件下可变为好事,反之亦然。形容人的心态,一定要乐观向上,任何事情都有二面性,不好的一面,有可能向好的一面转化。塞翁失马,焉知非福出自《 淮南子…

    百科 2024-09-21