2017-04-07 134 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