2013-03-11 52 views
1

如何從.NET的字符串中刪除空格?如何從字符串中刪除空格?

例如, 「HELLO WORLD!」變成「HELLOWORLD!」

+0

快捷版作爲參考:「HELLO WORLD!」。Replace(「」,「」); – Sunny 2013-03-11 03:38:17

+0

@Sundeep:不,這只是一個它不是「空白」 – 2013-03-11 03:38:54

+0

@Jack:標記爲正確的答案不使用'Char.IsWhiteSpace()' – 2013-03-11 03:56:34

回答

3

使用正則表達式,(這是我怎麼會做到這一點!)

string sample = "HELLO WORLD ! "; 

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

或者,LINQ方式

string sample = "Hello world! "; 
var result = new string(sample.Where(c => !Char.IsWhiteSpace(c)).ToArray()); 

入住這太問題:Fastest way to remove white spaces in string

似乎是最好的方式來做到這一點。

public static string RemoveWhiteSpaces(this string str) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < str.Length; i++) 
    { 
     char c = str[i]; 
     if (!Char.IsWhiteSpace(c)) 
      sb.Append(c); 
    } 

    return sb.ToString(); 
} 
+0

使用'\ s +'可能更高效,不是嗎? – Blorgbeard 2013-03-11 03:33:19

+0

@Blorgbeard - 正如你所說的先生! – 2013-03-11 03:33:41

+0

'Regex'文檔沒有明確提到這一點,但我猜''s'使用'Char.IsWhiteSpace()' - 因此它得到所有的Unicode空格。 – 2013-03-11 03:38:12

2

如果你只是擔心只有左右的空間,使用String類的Replace方法:

var str = " HELLO WORLD ! "; 
var strWithoutSpaces = str.Replace(" ", ""); 

否則,使用的Regex.Replace方法在AppDeveloper的答案建議。

+0

好,但只獲取空格 - 不是標籤等。 – Blorgbeard 2013-03-11 03:34:26

+0

有很多很多「空白」而不是「」。 – 2013-03-11 03:35:07

+0

好點,我重新措辭我的答案。 – cdmckay 2013-03-11 03:36:28

1

使用Char.IsWhiteSpace遍歷原字符串的每個字符(AppDeveloper的回答修改)

public static string RemoveWhiteSpaces(this string str) 
{ 
    StringBuilder sb = new StringBuilder(); 
    for (int i = 0; i < str.Length; i++) 
    { 
     if(!Char.IsWhiteSpace(str, i)){ 
      sb.Append(str[i]); 
     } 
    } 
    return sb.ToString(); 
} 

-----原來的答案------

String.Trim( )

空格字符由Unicode標準定義。修剪() 方法刪除任何前導字符和尾隨字符,這些字符在傳遞給Char.IsWhiteSpace 方法時會生成返回值爲true的結果。

http://msdn.microsoft.com/en-us/library/t97s7bs3.aspx

+0

'Trim'只刪除字符串開頭和結尾的空格。 – cdmckay 2013-03-11 03:37:31

+0

對不起,沒有看到你想要的整個字符串 – smith324 2013-03-11 03:37:57

+0

因爲修剪內部使用'Char.IsWhiteSpace'我會採取同樣的方法在這裏。只需創建一個StringBuilder並遍歷原始字符串,將字符添加到構建器中,如果!IsWhiteSpace – smith324 2013-03-11 03:40:00

1

使用此

var original=" HELLO WORLD \t! "; 
var result=original.Select(x => x.ToString().Trim()).Aggregate(String.Concat); 

或本

var result=new String(original.Where(x => !Char.IsWhiteSpace(x)).ToArray()); 

這真的刪除空格,不僅空間

+1

有趣的方法,但我認爲您應該使用Char.IsWhiteSpace而不是將每個字符轉換爲字符串。 – 2013-03-11 03:51:58

+0

@pswg:這將是'var result = new String(original.Where(x =>!Char.IsWhiteSpace(x))。ToArray());' – 2013-03-11 03:57:38

+0

+1我編輯了您的答案,將其作爲替代解決方案。 – 2013-03-11 04:29:21