2011-04-02 109 views
3

任何一個知道如何從字符串中刪除過多的空格?從C#中的字符串中刪除空格?

例如:

string myString = "I   am going to work."; 

任何人都知道做這種微調的一個好劇本?

+2

答案似乎在這裏:http://www.dotnetperls.com/remove-whitespace – 2011-04-02 22:11:29

+0

應該如何處理一個空格,一個換行符和另一個空格? – 2011-04-02 22:12:56

+0

@Matt這就是我讀得太快。我看到了這一點,並假定它只處理單個空間。謝謝。 – loyalpenguin 2011-04-02 22:14:11

回答

13

Regex.Replace(myString, @"\s+", " ")會做到這一點。

+1

太好了。我知道有很多方法可以做到這一點,但這是迄今爲止最短的方法。謝謝。 – loyalpenguin 2011-04-03 18:43:06

1

我曾經有:

while (myString.IndexOf(" ") >= 0) 
    myString = myString.Replace(" ", " "); 

也許有更優雅的方式,但它的作品。

+0

這將工作的字符串中的標籤? – jlafay 2011-04-03 00:06:10

+0

@jlafay nope,只是普通的空間。 – 2011-04-03 06:57:28

2

Regex.Replace(myString, @"\s+", " ")應該這樣做。

+0

我認爲這將完全消除多個空白,導致「Iam去工作」。對於給定的例子。我認爲Regex.Replace(myString,@「\ s +」,「」);會導致正確的答案。 – joce 2011-04-02 22:14:23

+0

你是對的;我已經相應地更新了它。 – 2011-04-02 22:16:11

+0

即使您設定了最小值,您的答案也會產生錯誤的結果。 – configurator 2011-04-02 22:17:46

1

我更喜歡使用正則表達式,但這只是另一個建議。

string.Join(" ", myString.Split(' ').Where(p => p != string.Empty)); 

或者

string.Join(" ", myString.Split(new[] {' '} 
       , StringSplitOptions.RemoveEmptyEntries)); 

祝你好運!

+1

...或者可以在'string.Split()'中使用'StringSplitOptions.RemoveEmptyEntries'? :D – 2011-04-03 00:05:28

+0

@Richard Neil Ilagan:謝謝,我編輯了它。 – Homam 2011-04-03 08:06:39