Если у меня есть, например, следующая строка:Шов разделителей строки в список <int>
«123; 3344; 4334; 12»
, и я хочу, чтобы эти цифры в общем List<int>
, я предполагаю, что я не знаю здесь хорошего способа, кроме как разбить в цикле и сделать преобразование, а затем добавить к List<int>
через каждую итерацию. У кого-нибудь есть другие способы сделать это?
Обновлено. Вот что я придумал. Я хочу сделать это по-старому, а не с LINQ, потому что я стараюсь улучшаться с помощью только строк, массивов, списков и манипулирования и преобразования в целом.
public List<int> StringToList(string stringToSplit, char splitDelimiter)
{
List<int> list = new List<int>();
if (string.IsNullOrEmpty(stringToSplit))
return list;
string[] values = stringToSplit.Split(splitDelimiter);
if (values.Length <= 1)
return list;
foreach (string s in values)
{
int i;
if (Int32.TryParse(s, out i))
list.Add(i);
}
return list;
}
Это новый метод строка утилиты Я планирую использовать всякий раз, когда мне нужно, чтобы преобразовать список с ограничителями строк в список
Так я возвращаю пустой список обратно к абоненту, если что-то не получается. Хорошо плохо? это довольно часто для этого?
Да, есть более «изящные» способы сделать это с помощью LINQ, но я хочу сделать это вручную .. по-старому на данный момент только для моего собственного понимания.
Кроме того, что беспокоит меня об этом:
list.AddRange(str.Split(';').Select(Int32.Parse));
, что я понятия не имею:
- Как засунуть в TryParse там вместо этого.
- Что делать, если
str.Split(';').Select(Int32.Parse)
просто не работает по какой-либо причине ... тогда метод, в котором находится этот AddRange, взорвется, и если я не добавлю попытку/поймать все это, я ввернусь, если не буду правильно обработайте его.
Использование TryParse здесь является серьезной ошибкой: http://en.wikipedia.org/wiki/GIGO –