Jeśli mam na przykład następujący ciąg:wpakować rozdzielany ciąg do listy <int>
"123; 3344; 4334; 12"
i chcę te numery w ogólnej List<int>
, chyba nie znam dobrej drogi tutaj, poza dzieleniem w pętli i konwersją, a następnie dodawaniem do List<int>
przez każdą iterację. Czy ktoś ma na to inne sposoby?
Zaktualizowano. Oto, co wymyśliłem. Chcę to zrobić w starym stylu, nie w LINQ, ponieważ staram się poprawić tylko z łańcuchami, tablicami, listami i manipulowaniem i konwersją w ogóle.
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;
}
Jest to nowa metoda narzędzie Ciąg I planujesz używać ilekroć muszę konwertować listę ciąg rozdzielany do listy
Więc wracam pustą listę z powrotem do osoby dzwoniącej, jeśli coś się nie powiedzie. Dobry zły? czy to dość powszechne?
Tak, jest więcej "eleganckich" sposobów na zrobienie tego za pomocą LINQ, ale chcę zrobić to ręcznie. Stara droga na razie tylko dla własnego zrozumienia.
Ponadto, co przeszkadza mi o to:
list.AddRange(str.Split(';').Select(Int32.Parse));
jest to, że nie mam pojęcia:
- Jak wpakować w TryParse tam zamiast.
- Co się stanie, jeśli
str.Split(';').Select(Int32.Parse)
po prostu zawiedzie z jakiegokolwiek powodu ... wtedy metoda, w której znajduje się ten AddRange, wysadzi się w powietrze i jeśli nie dodaję try/catch dookoła tej całej rzeczy, jestem spieprzony, jeśli nie postępuj właściwie.
Korzystanie TryParse tutaj jest poważnym błędem: http://en.wikipedia.org/wiki/GIGO –