2014-01-10 6 views
9

Ich überprüfe Zeilen in einer bestimmten Textdatei. Zeilen können zufällige Leerzeichen haben, und ich bin nur daran interessiert, die Anzahl der Wörter in der Zeile und nicht das Leerzeichen zu überprüfen. Ich tue:Unterschied zwischen der Verwendung von Split ohne Parameter und RemoveEmptyEntries Option

string[] arrParts = strLine.Trim().Split(); 

if (arrParts.Length > 0) 
{ 
    ... 
} 

nun nach Msdn,

If the separator parameter is null or contains no characters, white-space characters are assumed to be the delimiters. White-space characters are defined by the Unicode standard and return true if they are passed to the Char.IsWhiteSpace method. 

Die IsWhiteSpace Methode viele verschiedene Formen von Leer einschließlich der usuals umfasst: ' ' \t and \n

jedoch vor kurzem ich dieses Format gesehen habe verwendet :

Split(new char[0], StringSplitOptions.RemoveEmptyEntries)

Wie ist das anders?

Antwort

6

Betrachten Sie die folgende Zeichenfolge:

"Some Words"//notice the double space 

Split() Verwendung auf weißen Platz aufgeteilt wird und drei Elemente umfassen wird („Some“, „“, „Words“) wegen des doppelten Raumes.

Die StringSplitOptions.RemoveEmptyEntries Option weist die Funktion Emtpy Einträge zu diskontieren, so würde es es 2 Artikel führen ("Some", "Words")

Here is a working example


Zur Vollständigkeit der new char[0] Parameter ist geliefert, um auf die Überlast zuzugreifen, die die Angabe StringSplitOptions ermöglicht. Um das Standardtrennzeichen zu verwenden, muss der Trennparameter null oder Nulllänge sein. In diesem Fall würde jedoch die Verwendung von null mehrere Überladungen erfüllen, so dass Sie einen gültigen Typ angeben müssen (entweder char[] oder string[]). Dies kann auf verschiedene Arten geschehen, wie zum Beispiel (char[])null oder null as char[], oder indem Sie ein Char-Array der Länge null wie oben verwenden.

See here for more information

0

Ohne RemoveEmptyEntries mit können Sie leere Zeichenfolgen in der Ergebnismatrix erhalten.