2017-04-07 7 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(); 
} 

Den Ausgang des obigen Codes arbeitet, istSplit-Funktion in C# nicht richtig

A 


B 

C 
7 

die 7 is length of the array, aber meine Frage ist, dass, wenn ich bestehen ',' in Parametern der Split-Funktion.

also warum es erste ',' als ein Leerzeichen braucht. und warum es 2 von 3 'braucht, als Raum nach A. und warum braucht es 1 von 2 ',' Raum nach B?

+3

Ihre Hausaufgaben machen und die Dokumentation lesen. https://msdn.microsoft.com/en-us/library/b873y76a(v=vs.110).aspx –

+0

weil Split() betrachten, gibt es ein "Leerzeichen" zwischen ,, –

+0

Überprüfen Sie die Länge der "Leerzeichen" - Ich denke, Sie werden feststellen, dass Split eine leere Zeichenfolge zurückgibt - was genau dem ersten Komma vorangeht und zwischen den anderen liegt. Ändern Sie die WriteLine in Ihrer Schleife zu diesem _ "Console.WriteLine ("> "+ Mitglied +" <"+ Mitglied.Länge +" "+ (Mitglied == null));" _ – PaulF

Antwort

2

Die Antwort für Dich Frage ist, dann ist dies nicht der Raum, aber das ist leere Zeichenfolge

string leer sein und Sie dies als Raum sehen.

,, < - nach , haben wir nichts, so Split-Methode fügt leere Zeichenfolge.

Wenn Sie diese entfernen möchten, müssen Sie nach ','StringSplitOptions

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

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

+2

Split fügt nicht Null - es fügt hinzu eine leere Zeichenfolge. – PaulF

+0

@PaulF Ja, du hast Recht – Niewidzialny

+1

String.Empty ist nicht dasselbe wie null. Führen Sie OP-Code mit dieser WriteLine _ "Console.WriteLine ("> "+ Mitglied +" <"+ Mitglied.Länge +" "+ (Mitglied == null) +" "+ (Mitglied == String.Empty));" _ – PaulF

-1

weil Sie ein Leerzeichen vor ',' haben und weil es nur einen Platzhalter zwischen B und C gibt?

0

/für diese Frage nur die Funktion "Split()" zählt. Wir können jedes Sonderzeichen angeben, um die Array-Elemente aufzuteilen. Hinweis: Es ist nicht anwendbar für Sonderzeichen wie einzelne Zitate und Doppelnotierungen/

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

Das Bild der Ausgabekonsole Bildschirm zeigt:

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