为什么Split函数有两个数组?

时间:2013-12-06 08:42:44

标签: c#

当我用C#编程时,使用Split功能:

string[] singleStr=str.Split(';');

str是column111.dwg&186&0;

为什么singleStr.Length=2?为什么通过数组给出一个数组为null?

6 个答案:

答案 0 :(得分:3)

我不确定desStr是什么样的,但听起来你需要使用StringSplitOptions.RemoveEmptyEntries

  

返回值不包含包含空的数组元素   串

string str = "column111.dwg&186&0;";
string[] singleStr = str.Split(new char[] {';'}, StringSplitOptions.RemoveEmptyEntries);

foreach (var item in singleStr)
{
    Console.WriteLine(item);
}

仅输出;

column111.dwg&186&0

这里有 demonstration

如果我们在这种情况下不使用StringSplitOptions.RemoveEmptyEntriessingleStr数组有2个项目; column111.dwg&186&0""

答案 1 :(得分:1)

如果您不想要空条目,请使用以下结构:

string[] singleStr=str.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries);

答案 2 :(得分:1)

基本上,在数组中有两个项是正确的,因为你的字符串中有一个分号。

Split方法的原型之一允许您将SplitStringOptions设置为RemoveEmptyEntries

例如:

var parts = yourString.Split( new []{';'}, SplitStringOptions.RemoveEmptyEntries);

答案 3 :(得分:1)

使用此:

string[] singleStr=str.Split(new[]{';'}, StringSplitOptions.RemoveEmptyEntries);

它将删除null和空字符串,如空格和其他

回答你的问题: 数组长度为2,因为Split看到:column111.dwg&186&0;并在;上进行拆分并得到:

column111.dwg&186&0;之后只有null字符串

答案 4 :(得分:1)

如果您想忽略空条目,请尝试使用

String.Split Method (Char[], StringSplitOptions)

  

返回包含此字符串中子字符串的字符串数组   由指定的Unicode字符数组的元素分隔。   参数指定是否返回空数组元素。

StringSplitOptions Enumeration

  

RemoveEmptyEntries:

     

返回值不包含包含空的数组元素   串

答案 5 :(得分:1)

这是因为它在找到“;”的任何地方拆分字符串在字符串中,因为你的“;”导致空条目在字符串的末尾。

您可以使用以下调用删除emtpy条目:

str.Split(new char[] { ';' }, StringSplitOptions.RemoveEmptyEntries);