Если у меня есть, например, следующая строка:
"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, взорвется, и если я не добавлю попытку / ловушку вокруг всего этого, я облажалсяесли я не справлюсь должным образом.