Ho una stringa:
var names = "Brian,Joe,Chris";
C'è un modo per convertirlo in un List<string>
delimitato da ,
in una riga?
for
ciclo, che è più noioso, soggetto a errori e poco chiaro.
Ho una stringa:
var names = "Brian,Joe,Chris";
C'è un modo per convertirlo in un List<string>
delimitato da ,
in una riga?
for
ciclo, che è più noioso, soggetto a errori e poco chiaro.
Risposte:
List<string> result = names.Split(new char[] { ',' }).ToList();
O anche più pulito secondo il suggerimento di Dan:
List<string> result = names.Split(',').ToList();
new char[] { }
parte. È più leggibile in questo modo, almeno per me .
System.LINQ
spazio dei nomi?
Il List<T>
ha un costruttore che accetta un IEnumerable<T>
:
List<string> listOfNames = new List<string>(names.Split(','));
Lo preferisco perché impedisce un singolo elenco di elementi con un elemento vuoto se la stringa di origine è vuota:
IEnumerable<string> namesList =
!string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
Divide una stringa delimitata da caratteri e restituisce tutti gli elementi non vuoti.
var names = ",Brian,Joe,Chris,,,";
var charSeparator = ",";
var result = names.Split(charSeparator, StringSplitOptions.RemoveEmptyEntries);
https://docs.microsoft.com/en-us/dotnet/api/system.string.split?view=netframework-4.8
string given="Welcome To Programming";
List<string> listItem= given.Split(' ').ToList();//Split according to space in the string and added into the list
produzione:
Welcome
To
Programming
Se si dispone già di un elenco e si desidera aggiungere valori da una stringa delimitata, è possibile utilizzare AddRange
o InsertRange
. Per esempio:
existingList.AddRange(names.Split(','));
Usa il pacchetto nuget Stringify.Library
//Default delimiter is ,
var split = new StringConverter().ConvertTo<List<string>>(names);
//You can also have your custom delimiter for e.g. ;
var split = new StringConverter().ConvertTo<List<string>>(names, new ConverterOptions { Delimiter = ';' });