2013-05-02 90 views
32

我正在构建由连字符分隔的姓氏字符串。有时候空白会被抓到。我需要从最终结果中删除所有空格。使用正则表达式从C#字符串中删除所有空格

样本串工作:

安德森磁簧史密斯

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

安德森 - 里德Smith

姓氏字符串在字符串vari能,姓氏。

我使用正则表达式:

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

这样做的结果是:

安德森磁簧 - 史密斯。

我也试过:

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

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

我在做什么错?

+0

如果名称是字符串中唯一的数据你不需要正则表达式。否则,你可以使用( - | - | - ) – Evo510 2013-05-02 19:29:02

回答

114

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

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

这个。我现在将这个答案投给,但我已经达到了今天的投票限制。 – Renan 2013-05-02 19:28:26

+1

不知道有一个限制! – 2013-05-02 19:28:49

+4

@Ranan,明天再回来,upvote :) – Gabe 2013-05-02 19:29:33

11

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

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

+4

有问题。想用正则表达式来解决它。现在我有两个问题。用LINQ解决它。还有两个问题:-) – 2013-05-02 19:29:53

+1

@JuliánUrbano是正则表达式在维护时可能会有问题,但对Linq我不能这么说。 – I4V 2013-05-02 19:30:54

+1

@JuliánUrbano,你永远不应该*想*解决任何事情,因为它是一个特定的API。在LINQ的答案中,有太多的问题都可以在这个网站上得到解答,尽管 - 实质上 - 它可以更容易和更快地解决。选择最佳解决方案。 – 2013-05-02 19:31:40

44

Regex.Replace不会修改它的第一个参数(记住,字符串是在.NET不变),因此呼叫

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

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

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

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

-1

下面是将文件名中的空格替换为给定URL的代码,我们也可以使用字符串将其删除。空的,而不是 “〜”

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

Op说所有_“我需要删除所有**空白**”_并使用'\ s'。但是这个句柄只有'''''空格,并且大多不相关。而'Trim()'只处理前导空间和后端空间。我不认为合适。 – 2017-08-10 11:04:05

-1

为什么要使用正则表达式时,你可以简单地使用TRIM()方法

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

OR

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

他需要删除所有空格,而不仅仅是前导空格和结束空格 – 2017-02-21 10:43:41

0

最快的和通用的方式来做到这一点(线终结者,标签也将被处理)。 Regex强大的工具并不需要解决这个问题,但Regex可以降低性能。

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

OR

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