我想使用VB.net删除多余的空格
离。
"The Quick Brown Fox"
我想要输出
"The Quick Brown Fox"
谢谢, inchika
答案 0 :(得分:22)
您可以使用简单的正则表达式:
Dim cleaned As String = Regex.Replace(input, "\s{2,}", " ")
答案 1 :(得分:6)
我意识到这个问题相当陈旧,但还有另一个选项不涉及正则表达式,或者手动循环字符串并替换:
Private Function StripSpaces(input As String) As String
Return String.Join(" ", input.Split(New Char() {}, StringSplitOptions.RemoveEmptyEntries))
End Function
和C#等价物:
private string StripSpaces(string input)
{
return string.Join(" ", input.Split((char[])null, StringSplitOptions.RemoveEmptyEntries));
}
使用" null"作为String.Split
上的拆分字符的值会导致拆分字符成为所有返回true的字符(如果它们已发送到Char.IsWhiteSpace
)。因此,以这种方式调用方法将在所有空格上拆分字符串,删除空字符串,然后将每个拆分数组元素之间的单个空格重新连接在一起。
答案 2 :(得分:4)
你真正想要的是将任何多个空格压缩到一个空格,一种方法是搜索两个空格并用一个空格替换它们,直到没有两个相邻的空格,类似于这样:
Dim myString As String = "The Quick Brown Fox"
While myString.IndexOf(" ") <> -1
myString = myString.Replace(" ", " ")
End While
Console.WriteLine(myString)
然而,由于.net strings的某些意识形态,这不是万无一失的,这可能会进入无限循环,但仅限于一些非常奇怪的输入。
编辑:正如其他答案中所指出的,这种特殊处理使用正则表达式更快(更简单)。
答案 3 :(得分:3)
试试这个:
Dim output As String = Regex.Replace("The Quick Brown Fox","\\s+" , " ")