Gibt es eine Entsprechung zu String.Split, die eine generische Liste zurückgibt?

Ich würde gerne so etwas machen:

Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String) = Foo.Split(","c)

Natürlich gibt Foo.Split ein eindimensionales Array von String zurück, nicht eine generische List . Gibt es eine Möglichkeit, dies zu tun, ohne das Array zu durchlaufen, um es in eine generische -Liste umzuwandeln?

12
hinzugefügt bearbeitet
Ansichten: 2

7 Antworten

Wenn Sie LINQ nicht verwenden möchten, können Sie Folgendes tun:

Dim foo As String = "a,b,c,d,e"
Dim boo As New List(Of String)(foo.Split(","c))
31
hinzugefügt
Ich wusste nichts über den c , um eine Zeichenkette zu einem Zeichen zu machen ... Ich habe immer new Char() {","} verwendet. Das ist ein * viel besser
hinzugefügt der Autor freefaller, Quelle

Sie können den Konstruktor der Liste verwenden.

String foo = "a,b,c,d,e";
List boo = new List(foo.Split(","));
7
hinzugefügt
Gab Antwort auf @Bob King für die Beantwortung in VB.NET - danke.
hinzugefügt der Autor Herb Caudill, Quelle
Sorry Matten! Keine harten Gefühle!
hinzugefügt der Autor Bob King, Quelle

Do you really need a List or will IList do? Because string[] already implements the latter... just another reason why it's worth programming to the interfaces where you can. (It could be that in this case you really can't, admittedly.)

6
hinzugefügt
Sie können IList verwenden, eigentlich sollten Sie (obwohl ich im Codebeispiel meiner Antwort vergessen habe)
hinzugefügt der Autor IAmCodeMonkey, Quelle
Ich stimme zu, obwohl ich versuche, in diese Gewohnheit zu kommen.
hinzugefügt der Autor Saif Khan, Quelle

Die einfachste Methode wäre wahrscheinlich die AddRange-Methode.

Dim Foo as String = "a,b,c,d,e"
Dim Boo as List(of String)

Boo.AddRange(Foo.Split(","c))
4
hinzugefügt
Danke - das funktioniert genauso gut wie die angenommene Antwort, ist aber etwas weniger kompakt.
hinzugefügt der Autor Herb Caudill, Quelle
Beste Antwort auf Split zu Liste von Ich habe gefunden ..
hinzugefügt der Autor stigzler, Quelle
Dieser Code funktioniert? Es sieht für mich so aus, als würde es eine NullReferenceException auslösen.
hinzugefügt der Autor Ryan Lundy, Quelle
Du hast recht. Ich habe vergessen, die Boo-Instanz zu erstellen.
hinzugefügt der Autor amcoder, Quelle

Hier ist, wie ich es mache ... Da der Split nach einem Array von Zeichen sucht, schneide ich den ersten Wert in meiner Zeichenfolge ab.

var values = labels.Split(" "[0]).ToList();
0
hinzugefügt

Wenn Sie Linq verwenden, können Sie die Erweiterungsmethode ToList() verwenden

Dim strings As List = string_variable.Split().ToList();
0
hinzugefügt
Wie genau schlagen Sie vor, mit Linq eine kommaseparierte Zeichenfolge abzufragen?
hinzugefügt der Autor Herb Caudill, Quelle
Er fragt nicht danach. Die ToList() - Erweiterungsmethode, die Code Monkey in seiner Antwort zeigt, ist nur ein Teil der als "Linq" bekannten Klasse von Funktionen (und wird verwendet, um die LINQ-Abfrage zu unterstützen, aber Sie können sie für andere Dinge verwenden).
hinzugefügt der Autor James Curran, Quelle

Um auf der Antwort aufzubauen, fand ich folgendes sehr hilfreich:

Return New List(Of String)(IO.File.ReadAllLines(sFileName))
0
hinzugefügt