2017-04-07 153 views
-4
static void Main(string[] args) 
{ 
    string Var = ",A,,,B,,C"; 
    string[] members = Var.Split(','); 
    foreach (string member in members) 
    { 
     Console.WriteLine(member); 
    } 
    Console.WriteLine(members.Length); 
    Console.ReadLine(); 
} 

上述代码的输出拆分功能不能正常工作

A 


B 

C 
7 

7 is length of the array,但我的问题是,当我在分裂功能的参数传递','

为什么它需要初始','作为空间。以及为什么它需要3'中的2个','作为A之后的空间。以及为什么它需要2'中的1个,'作为B之后的空间?

+3

做好你的功课和阅读文档。 https://msdn.microsoft.com/en-us/library/b873y76a(v=vs.110).aspx –

+0

因为Split()考虑有一个'空格',, –

+0

检查“空格”的长度, - 我想你会发现Split会返回一个空字符串 - 这正是第一个逗号之前的字符串,并且是其他字符之间的字符串。将循环中的WriteLine更改为此_“Console.WriteLine(”>“+ member +”<“+ member.Length +”“+(member == null));”_ – PaulF

回答

2

对你的问题是答案,这是不占空间,但这是空字符串

string可以是空的,并且看到此作为的空间。

,, < - ,之后我们什么也没有,所以split方法增加了空字符串。

如果要删除这一点,你必须把后','StringSplitOptions

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

DOC:https://msdn.microsoft.com/pl-pl/library/tabh47cf(v=vs.110).aspx

+2

Split不会添加null - 它会添加一个空的字符串。 – PaulF

+0

@PaulF是的,你是对的 – Niewidzialny

+1

String.Empty不是null。使用此WriteLine运行OP代码_“Console.WriteLine(”>“+ member +”<“+ member.Length +”“+(member == null)+”“+(member == String.Empty));” @ – PaulF

-1

因为您在第一个'''之前有一个空格,并且B和C之间只有一个占位符?

0

/对于这个问题只有功能 “分裂()” 计数。我们可以给任何特殊的字符来分割数组元素。 注:不适用于特殊字符,如单引号和双引号/

 string Var = "-%%A-,,$$,[email protected]@%-C"; 
     string[] members = Var.Split('-',',','@','$','%'); 
     foreach (string member in members) 
     { 
      Console.WriteLine(member); 
     } 
     Console.WriteLine(members.Length); 
     Console.ReadLine(); 

的图像显示输出控制台屏幕:

https://i.stack.imgur.com/aArY5.png