使用regex从C#字符串中删除所有空格

Bat*_*rog 38 c# regex string

我正在构建一个由连字符分隔的姓氏字符串.有时一个空格会被抓到那里.我需要从最终结果中删除所有空格.

要处理的示例字符串:

安德森 - 里德史密斯

它需要最终成为(安德森之后没有空间):

安德森 - 里德 - 史密斯

姓氏字符串位于字符串变量LastName中.

我正在使用正则表达式:

Regex.Replace(LastName, @"[\s+]", "");
Run Code Online (Sandbox Code Playgroud)

结果是:

安德森 - 里德史密斯.

我也尝试过:

Regex.Replace(LastName, @"\s+", "");
Run Code Online (Sandbox Code Playgroud)

Regex.Replace(LastName, @"\s", "");
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

Gab*_*abe 126

取而代之的是中RegEx使用Replace的东西,很简单:

LastName = LastName.Replace(" ", String.Empty);
Run Code Online (Sandbox Code Playgroud)

  • 但不是使用制表符或空格以外的其他空白字符(序号32). (18认同)
  • 这个.我现在就投票给这个答案,但我今天达到了投票限制. (3认同)

das*_*ght 52

Regex.Replace 不修改它的第一个参数(回想一下,字符串在.NET中是不可变的)所以调用

Regex.Replace(LastName, @"\s+", "");
Run Code Online (Sandbox Code Playgroud)

保持LastName字符串不变.你需要像这样调用它:

LastName = Regex.Replace(LastName, @"\s+", "");
Run Code Online (Sandbox Code Playgroud)

你的所有三个正则表达式都有效.但是,第一个正则表达式也将删除所有加号字符,我想这将是无意的.


I4V*_*I4V 12

不需要正则表达式.这也将删除标签,换行符等

var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c)));
Run Code Online (Sandbox Code Playgroud)

WhiteSpace字符: 0009 , 000a , 000b , 000c , 000d , 0020 , 0085 , 00a0 , 1680 , 180e , 2000 , 2001 , 2002 , 2003 , 2004 , 2005 , 2006 , 2007 , 2008 , 2009 , 200a , 2028 , 2029 , 202f , 205f , 3000.

  • 有一个问题.想用正则表达式来解决它.现在我有两个问题.用LINQ解决它.还有两个问题:-) (4认同)