前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C#如何删除字符串中任何位置的空格?

C#如何删除字符串中任何位置的空格?

作者头像
高一峰
修改2020-09-22 14:48:21
11K0
修改2020-09-22 14:48:21
举报
文章被收录于专栏:高渡号外高渡号外高渡号外

C#如何删除字符串中任何位置的空格?

—— 新手编程1001问之C#编程基础


你或许知道你能使用String.Trim()方法,去除字符串的头和尾的空格。不幸运的是,这个Trim方法不能去除字符串中间的C#空格。

事实上,C#提供了多种方法清除字符串中的空格,我们分述如下。

首先,我们最容易想到的当然是Trim()方法,示例代码如下:

示例代码1
示例代码1

的确,Trim() 方法只能去除字符串首尾的空格。

上面代码运行的结果显示为:aa a

那么,我们如何去掉字符串中间的空格呢?

我们可能想到的算法是:以空格为分隔符,将原字符串转换为数组,再遍历数组并且重新拼接为一个新的字符串。理论上,这是没有问题的。示例代码如下:

示例代码2
示例代码2

我们看到demo2的代码数量明显增加了,并且,新增了一个数组对象和一个新字符串对象,并且使用了两次转换(字符串转数组和数组元素重新拼接位字符串),这样操作显然会影响代码的性能,如果字符串的长度足够大,这个方法就需要斟酌了。

那么,C#有没有一个直接清除字符串任意位置空格的方法呢?

答案是肯定的,我们可以使用替换函数 Replace() 来实现。示例代码如下:

示例代码3
示例代码3

上面代码运行的结果,显示为:Thisiswhatmyteststringlookslike

哈哈,这个看起来效率不错啊!

事实上,有同学已经做过测试,在多种替换(清除空格)的方案中,Replace()的确是效率最高的。

但是,请注意,使用Replace()的时候,我们需要特别注意一点,Replace()函数不会直接改变原来字符串的值,而是返回一个经过替换操作以后的新值。所以,使用的时候,通常会把它再赋值给原来的字符串对象,例如上面的案例。

还有一种情况,如果我们需要操作的对象不是一个简短的字符串,而是一个长文本,其中可能包含回车、tab以及空行等等,都需要一并清除,怎么办?

这里告诉大家一个简单方法,因为Replace()支持嵌套操作,那么,我们就可以连续使用该方法直接使用目标字符串(空字符串)替换掉它们。代码如下图示:

实例代码4
实例代码4

上面的代码运行的结果,同样显示为:Thisiswhatmyteststringlookslike

好了,从这个问题的答案中,我们能体会到,一个看似简单的问题,总有多种算法实现。

我们一直倡导,作为程序员,我们要培养自己在代码问题上拥有“强迫症”的习惯,努力寻找最佳的解决方案。这样,我们编程的水平也才能不断精进。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-08-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 高渡号外 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • C#如何删除字符串中任何位置的空格?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档