2011-04-14 72 views

回答

22

您可以使用一個簡單的正則表達式:

Dim cleaned As String = Regex.Replace(input, "\s{2,}", " ") 
+0

感謝fredrik它的工作原理。 – maria 2011-04-14 12:50:42

3

試試這個:

Dim output As String = Regex.Replace("The Quick   Brown Fox","\\s+" , " ") 
+0

謝謝Cyber​​nate – maria 2011-04-14 12:51:13

+0

如果字符串不止一行,這不起作用。 – SezMe 2017-01-13 07:28:57

4

實際上你想要的是將任何多個空白空間壓縮到一個空間,一種方法是搜索兩個空格並用一個空格替換它們,直到沒有兩個相鄰的空格,像這樣:

Dim myString As String = "The Quick  Brown  Fox" 
    While myString.IndexOf(" ") <> -1 
     myString = myString.Replace(" ", " ") 
    End While 
    Console.WriteLine(myString) 

然而,這不是防呆因爲.net strings一些ideosyncracies,這可能會進入一個無限循環,但僅限於一些非常奇怪的投入。


編輯:這個特殊的處理速度更快(也更簡單),使用正則表達式,正如在其他答案中指出的那樣。

+0

感謝您的回覆我剛剛使用REGEX – maria 2011-04-14 12:52:16

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)); 
} 

使用「空」值作爲String.Split上的分割字符會導致分割字符爲全部字符,如果將它們發送到Char.IsWhiteSpace,則返回true。因此,以這種方式調用該方法將在所有空白處拆分字符串,刪除空字符串,然後在每個拆分數組元素之間用單個空格將它們重新連接在一起。

+0

喜歡它,謝謝分享 – user2793447 2015-02-03 16:49:28