Se ho ad esempio, la seguente stringa:spingere una stringa delimitata in una lista <int>
"123; 3344; 4334; 12"
e voglio questi numeri in un generico List<int>
, mi sa che non so di un buon modo qui oltre a dividere in un ciclo e fare una conversione quindi aggiungere a un List<int>
attraverso ogni iterazione. Qualcuno ha altri modi per farlo?
Aggiornato. Ecco cosa mi è venuto in mente. Voglio farlo alla vecchia maniera, non con LINQ perché sto cercando di migliorare con solo stringhe, array, liste e manipolazioni e conversioni in generale.
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;
}
Questo è un nuovo metodo di utilità stringa Ho intenzione di utilizzare ogni volta che ho bisogno di convertire un elenco stringa delimitata to List
Così sto tornando una lista vuota al chiamante se qualcosa non funziona. Buono cattivo? è abbastanza comune farlo?
Sì, ci sono più modi "eleganti" per farlo con LINQ ma voglio farlo manualmente .. al vecchio modo per ora solo per la mia comprensione.
Inoltre, quello che mi preoccupa di questo:
list.AddRange(str.Split(';').Select(Int32.Parse));
è che non ho idea:
- Come a spingere in un TryParse là invece.
- E se lo
str.Split(';').Select(Int32.Parse)
fallisce per qualsiasi motivo ... allora il metodo su cui si trova questo AddRange sta per esplodere e se non aggiungo un try/catch a questa cosa, sono fregato se non lo faccio gestirlo correttamente.
Utilizzando TryParse ecco un grave errore: http://en.wikipedia.org/wiki/GIGO –