Tengo una cuerda:
var names = "Brian,Joe,Chris";
¿Hay alguna forma de convertir esto en un List<string>
delimitado por ,
en una línea?
List<string> result = names.Split(new char[] { ',' }).ToList();
O incluso más limpio por sugerencia de Dan:
List<string> result = names.Split(',').ToList();
new char[] { }
parte completa . Es más legible de esa manera, al menos para mí .
System.LINQ
espacio de nombres?
El List<T>
tiene un constructor que acepta un IEnumerable<T>
:
List<string> listOfNames = new List<string>(names.Split(','));
Prefiero esto porque evita una lista de un solo elemento con un elemento vacío si su cadena de origen está vacía:
IEnumerable<string> namesList =
!string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
Divida una cadena delimitada por caracteres y devuelva todos los elementos no vacíos.
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
salida:
Welcome
To
Programming
Si ya tiene una lista y desea agregar valores de una cadena delimitada, puede usar AddRange
o InsertRange
. Por ejemplo:
existingList.AddRange(names.Split(','));
Utilice el paquete 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
bucle, que es más tedioso, propenso a errores y poco claro.