2014-01-07 99 views
6

好的,所以我正在研究這個VB.NET程序,我嘗試過使用.replace()來做到這一點,但這不是最好的方法。我有一個字符串與數據之間有多個空格,我不想要,從字符串中除去空格的最佳方法是什麼?將多個空間替換爲一個?

回答

12

使用正則表達式匹配多個空格,代之以一個空格:

s = Regex.Replace(s, " {2,}", " ") 
+0

整潔!它完美地工作,非常感謝你,我在其他線程上發現的所有其他代碼碰巧是非常龐大而笨重的,這是我不想要的,完美地工作,並且對重複感到抱歉! – bloodless2010

+0

@Guffa,你能解釋一下你使用的模式嗎? – MansoorShaikh

+0

@ MansoorShaikh:它只是一個空格,後跟量詞'{2​​,}',所以它匹配一個空格,重複兩次或更多次。 – Guffa

5

下面是一個使用數組的方式,如果你更願意避免正則表達式。

鑑於這個出發字符串:

Dim str As String = "This is a test  string" 

你可以這樣做:

Dim arr As String() = str.Split({" "c}, StringSplitOptions.RemoveEmptyEntries) 
Dim compressedSpaces As String = String.Join(" ", arr) 

還可以將其合併爲一行:

Dim newString As String = String.Join(" ", str.Split({" "c}, 
    StringSplitOptions.RemoveEmptyEntries)) 
+0

從@TimSchmelter引用的答案中,RegEx選項更快。 Jon Skeet說這種方法可以爲垃圾收集器創建大量工作,具體取決於源字符串的長度。 –

+0

RegEx在我的經驗中很少更快。如果速度是一個因素,最好在負載下檢查。由於調試/可維護性問題,應避免IMO正則表達式。 – rheitzman

+0

RegEx解決方案在這種情況下速度更快。請參閱此處的討論:http://stackoverflow.com/a/1280227/645511我應該注意它非常接近,具體取決於您想要的細節。 –

相關問題