Mam ciąg:
var names = "Brian,Joe,Chris";
Czy istnieje sposób, aby przekonwertować to na List<string>rozdzielone ,w jednym wierszu?
forpętli, która jest bardziej żmudna, podatna na błędy i niejasna.
Mam ciąg:
var names = "Brian,Joe,Chris";
Czy istnieje sposób, aby przekonwertować to na List<string>rozdzielone ,w jednym wierszu?
forpętli, która jest bardziej żmudna, podatna na błędy i niejasna.
Odpowiedzi:
List<string> result = names.Split(new char[] { ',' }).ToList();
Lub nawet czystszy według sugestii Dana:
List<string> result = names.Split(',').ToList();
new char[] { }część. W ten sposób jest bardziej czytelny, przynajmniej dla mnie .
System.LINQprzestrzeń nazw?
List<T>Konstruktor który akceptuje IEnumerable<T>:
List<string> listOfNames = new List<string>(names.Split(','));
Wolę to, ponieważ zapobiega pojedynczej liście pozycji z pustym elementem, jeśli ciąg źródłowy jest pusty:
IEnumerable<string> namesList =
!string.isNullOrEmpty(names) ? names.Split(',') : Enumerable.Empty<string>();
Podziel ciąg rozdzielany znakami i zwróć wszystkie niepuste elementy.
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
wynik:
Welcome
To
Programming
Jeśli masz już listę i chcesz dodać wartości z ciągu rozdzielanego, możesz użyć AddRangelub InsertRange. Na przykład:
existingList.AddRange(names.Split(','));
Użyj pakietu 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 = ';' });