J'ai une chaîne:
var names = "Brian,Joe,Chris";
Existe-t-il un moyen de convertir cela en un List<string>
délimité par ,
dans une ligne?
List<string> result = names.Split(new char[] { ',' }).ToList();
Ou même plus propre par la suggestion de Dan:
List<string> result = names.Split(',').ToList();
new char[] { }
partie entière . C'est plus lisible de cette façon, du moins pour moi .
System.LINQ
espace de noms?
Le List<T>
a un constructeur qui accepte un IEnumerable<T>
:
List<string> listOfNames = new List<string>(names.Split(','));
Je préfère cela car cela empêche une seule liste d'éléments avec un élément vide si votre chaîne source est vide:
IEnumerable<string> namesList =
!string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
Divisez une chaîne délimitée par des caractères et renvoyez tous les éléments non vides.
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
production:
Welcome
To
Programming
Si vous disposez déjà d'une liste et souhaitez ajouter des valeurs à partir d'une chaîne délimitée, vous pouvez utiliser AddRange
ou InsertRange
. Par exemple:
existingList.AddRange(names.Split(','));
Utilisez le package 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 = ';' });
for
boucle, qui est plus fastidieuse, sujette aux erreurs et peu claire.