2013-08-07 69 views
2

我無法從以下刪除多餘的空格:有特殊字符卸下字符串多餘空格

abc\ae.exe  a 1 b 2%% ACU > log.txt 

我使用下面的代碼去除多餘的空格(即我發現SO):

Regex.Replace(cmdLine, @"^\s*$\n", string.Empty, RegexOptions.Multiline).TrimEnd(); 

上面的代碼是刪除abc \ ae.exe之間多餘的空格&罰款;但是,它不會從2 %% ACU中刪除額外的空白區(中間有兩個空格)。

我對reg表達式不是很熟悉,但我認爲它與%符號可能是reg關鍵字的事實有關。

任何指導將不勝感激。

+0

爲什麼不只是用1個空格替換2個空格呢?如果它包含標籤,則用'「替換'[\ t] *'。 back-ticks在做空間時似乎有問題 –

+0

嗨。我正在測試一個行,你不知道在各個單詞之間會有多少空格。 –

回答

5
Regex.Replace(cmdLine,@"\s+"," "); 

將用一個空格代替多個空格

+意味着match the character one or more times

這裏有一個Regex Guide For C#

+0

嗨,感謝您的回覆。使用此表達式「abc \ abc.exe」遇到以下字符串時遇到問題。正如你所看到的,如果我提供這個表達式中沒有空格的字符串,它會返回「abc bc.exe」。它從字符串中刪除'\ a'。謝謝! –

+0

在我的測試中,該輸入可以正常工作,如果沒有空格,則不會替換任何內容。 – Jonesopolis

+0

這很奇怪。我沒有通過以下測試來傳遞'ingsda \ test_asdsafd.exe s 1 b 2 %% cldtg> log.txt'。它返回'ingsda est_asdsafd.exe s 1 b 2 %% cldtg> log.txt' –

0

你也可以用Character Groups做到這一點,如果你想挑選出特定白色空間字符而不是所有與\s(相當於[ \f\n\r\t\v]

string test = @"abc\ae.exe   a 1 b 2%% ACU > log.txt"; 
// Replace one more more space characters with a single space 
// Add other whitespace characters inside [ ] (ex: \t) 
string no_space2 = Regex.Replace(test,@"[ ]+"," ");