2011-01-25 86 views
3

得到了永恒不变的部分,永远怀念的是,感谢所有你怎么删除空间

大家好,

String test = "John, Jane"; 

test.Replace(" ",""); 

String[] toList = test.Split(',', ' ', ';'); 

你会如何字符串或任何空间,只删除空间显示可能?

为什么数组中有3个项目而不是2个?

回答

13

要删除的任何空间,只需用任何空字符串替换:

test = test.Replace(" ", ""); 

注意只是调用string.Replace不会去做 - 字符串是不可变的,所以返回值的string.Replace是对有关替换的新字符串的引用。

test=test.Replace(" ",""); 

如果你想要的任何空白被删除,您需要一个regex

+0

明白了并更新了OP,感谢大家的帮助。 – Rod 2011-01-25 19:51:58

5

,因为它是那么简单

using System.Text.RegularExpressions; 
Regex r=new Regex("\\s+"); 
test=r.Replace(test,""); 

回复:为什么会出现3个项目在数组中而不是2?

因为你被分裂两种逗号和空格(拆分ARG 1 + 2),因为有两个逗号和John之间的空间Jane你得到:

["John", "", "Jane"] // (in JSON notation ;)) 
1

如果你想拆除各类空白的,你可以使用string noWhiteSpace = Regex.Replace("John, Jane", @"\s", string.Empty);如果你只是想删除空格字符,请使用string noSpace = "John, Jane".Replace(" ",string.Empty);

刚才看到的第二部分你的问题,你在你的编辑说:

您在数组中获得三个项目,因为您的测试字符串将在要包含在要分割的字符列表中的每个标记处分割。你的字符串包含一个空格和一个逗号,并且你在逗号处得到一个分割,并在该空间分割。

如果你不想空项,可以使用以下命令:

String[] toList = test.Split(new char[] {',', ' ', ';'}, StringSplitOptions.RemoveEmptyEntries); 

当然,如果你有空格删除,那么你不会有任何空格在分裂。

0

因此,完整的解决方案会是这样:

String test = "John, Jane"; 

test = test.Replace(" ",""); 

String[] toList = test.Split(',', ';'); 

为什么会出现在阵3项,而不是2?

原因有二:1)当你调用Replace要生成字符串,你需要将其存储在某个变量 - 原始字符串是不可改变。 2)然后在调用Split时使用空格(' ')作为分隔符之一;你不需要(你要删除前一行的所有空格)。