2013-03-11 54 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