2013-05-02 55 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>() 
          ) 
相關問題