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

时间:2013-05-02 19:25:55

标签: c# regex string

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

要处理的示例字符串:

  

Anderson -Reed-Smith

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

  

安德森 - 里德 - 史密斯

姓氏字符串位于字符串变量LastName。

我正在使用正则表达式:

Regex.Replace(LastName, @"[\s+]", "");

结果是:

  

Anderson -Reed-Smith。

我也尝试过:

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

Regex.Replace(LastName, @"\s", "");

我做错了什么?

8 个答案:

答案 0 :(得分:120)

而不是RegEx使用Replace来表示简单的事情:

LastName = LastName.Replace(" ", String.Empty);

答案 1 :(得分:50)

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

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

保持LastName字符串不变。你需要这样称呼它:

LastName = Regex.Replace(LastName, @"\s+", "");

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

答案 2 :(得分:12)

不需要正则表达式。这也将删除制表符,换行符等

var newstr = String.Join("",str.Where(c=>!char.IsWhiteSpace(c)));

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

答案 3 :(得分:1)

执行此操作的最快速和最常用的方法(行终止符,标签也将被处理)。正则表达式强大的工具并不真正需要解决这个问题,但正则表达式会降低性能。

                       new string
                           (stringToRemoveWhiteSpaces
                                .Where
                                (
                                    c => !char.IsWhiteSpace(c)
                                )
                                .ToArray<char>()
                           )

OR

                       new string
                           (stringToReplaceWhiteSpacesWithSpace
                                .Select
                                (
                                    c => char.IsWhiteSpace(c) ? ' ' : c
                                )
                                .ToArray<char>()
                           )

答案 4 :(得分:0)

使用REGEX,您可以删除字符串中的空格。

以下名称空间是必需的。

using System.Text.RegularExpressions;

语法:

Regex.Replace(text, @"\s", "")

答案 5 :(得分:0)

您可以这样写,例如电话号码:

private static string GetFormattedPhoneNumber(string phoneNumber)
    => string.IsNullOrEmpty(phoneNumber) ? string.Empty 
    : Regex.Replace(phoneNumber, @"[+,\-,\(,\), \s+]*", string.Empty);

static void Main(string[] args)
    {
       Console.WriteLine(GetFormattedPhoneNumber("+375 (24) 55-333 "));
    }
/*
    Output: 3752455333
*/

答案 6 :(得分:-1)

下面是将文件名中的空格替换为给定URL的代码,我们也可以使用string.empty而不是“〜”来删除它。

  if (!string.IsNullOrEmpty(url))
          {
           string origFileName = Path.GetFileName(url);
           string modiFileName = origFileName.Trim().Replace(" ", "~");
           url = url.Replace(origFileName , modiFileName );
          }
          return url;

答案 7 :(得分:-3)

为什么在只使用Trim()方法时使用Regex

Text='<%# Eval("FieldDescription").ToString().Trim() %>'

OR

string test = "Testing    ";
test.Trim();