如何清除字符串中的重复空格

时间:2014-02-21 11:32:57

标签: vb.net c#-4.0

dim a as string = "     wilcome      to  sa      WeCame    "

期望的结果:

"Wilcome to sa WeCame"

3 个答案:

答案 0 :(得分:2)

您可以使用System.Text.RegularExpressions.Regex.Replace

Dim a As String = "     wilcome      to  sa      WeCame    "
Dim cleanedString As String = Regex.Replace(a, "\s{2,}", " ").Trim()

答案 1 :(得分:2)

您可以拆分字符串并再次组装。值得注意的是,Split - 方法存在重载,允许您指定在拆分字符串时更改行为的选项。在这种情况下,应指定StringSplitOptions.RemoveEmptyEntries

Dim a As String = "     wilcome      to  sa      WeCame    "
Dim parts = a.Split(New Char() {" "c}, StringSplitOptions.RemoveEmptyEntries)
Dim result = String.Join(" ", parts)

答案 2 :(得分:0)

进行大多数文本操作的最简单方法是通过regular expressions。在.NET中,可以在System.Text.RegularExpressions下找到正则表达式库。确保至少学习它的基础知识,它是程序员不可或缺的工具。

匹配两个或多个空格的基本模式非常简单:"  +"。那就是:一个空间,再加上至少一个空间。另一种写作方式是" {2,}"。结果如下:

dim a = "     wilcome      to  sa      WeCame    "
dim result = Regex.Replace(a, "  +", " ")

不幸的是,这还不够:

Console.WriteLine("[{0}]", result)
' [ wilcome to sa WeCame ]

搅拌器的两端都有多余的空间。现在,我们可以在正则表达式中获得(几乎)任意幻想,并且绝对有可能修复我们的表达式来处理它。 1 然而,有一种更简单的方法:Trim()结果字符串:

dim result = Regex.Replace(a, "  +", " ").Trim()

在一周的任何一天,简单性都胜过聪明。今天是星期五。


1 只是为了好玩,这是一种方式:

dim result = Regex.Replace(text, "((^) +)|( +($))|(( ) +)", "$2$4$6")

这使用以下事实:在.NET 中使用正则表达式中的括号捕获与括号内的内容对应的匹配文本。在替换字符串中,我们可以插入捕获的部分。

拼图中的第二部分是^匹配字符串的起始位置,$匹配结尾。这样,我们有三种选择:匹配字符串的开头后跟空格,或者匹配结尾,前面是空格,或匹配一个空格后跟更多空格。然后在开头或一个空格(取决于匹配的内容)中替换所有内容。