使用regex从c#字符串中删除所有空白

本文关键字:删除 空白 字符串 regex 使用 | 更新日期: 2023-09-27 18:11:48

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

要处理的示例字符串:

安德森史密斯

需要以(Anderson后无空格)结尾:

Anderson-Reed-Smith

姓氏字符串在字符串变量LastName中。

我正在使用正则表达式:

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

结果是:

安德森史密斯。

我也试过:

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

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

我做错了什么?

使用regex从c#字符串中删除所有空白

Replace代替RegEx

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

Regex.Replace不修改它的第一个参数(请记住,字符串在。net中是不可变的),所以调用

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

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

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

所有三个正则表达式都可以工作。然而,第一个正则表达式也会删除所有加号字符,我想这可能是无意的。

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

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

空白字符: 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

最快和通用的方法(行终止符,制表符也会被处理)。解决这个问题并不需要Regex强大的功能,但是Regex会降低性能。

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

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

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

以下命名空间是必选的

using System.Text.RegularExpressions;

语法:

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

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

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
*/

在我的例子中,我让您删除空白:

   var year = System.Text.RegularExpressions.Regex.Replace(space, @"&nbsp;", string.Empty).Replace("Year: ", string.Empty).Trim();

下面是将文件名中的空白替换为给定URL的代码,我们也可以通过使用string来删除相同的内容。空白代替"~"

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

如果可以简单地使用Trim()方法,为什么要使用Regex

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

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