2013-08-07 28 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,@"[ ]+"," ");