Si tengo, por ejemplo, la siguiente cadena:Shove una cadena delimitada en una lista <int>
"123; 3344; 4334; 12"
y quiero que estos números en un genérico List<int>
, supongo que No sé de una buena manera aquí aparte de dividir en un bucle y hacer una conversión, luego agregar a un List<int>
a través de cada iteración. ¿Alguien tiene otras formas de hacerlo?
Actualizado. Esto es lo que se me ocurrió. Quiero hacer esto a la vieja usanza, no con LINQ porque estoy tratando de mejorar con solo cadenas, matrices, listas y manipular y convertir en general.
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;
}
Este es un nuevo método de utilidad cadena que va a utilizar cada vez que necesito para convertir una lista cadena delimitada a la lista
Así que estoy volviendo una lista vacía de nuevo a la persona que llama si algo falla. ¿Bueno malo? ¿Es bastante común hacer esto?
Sí, hay más formas "elegantes" que hacer esto con LINQ pero quiero hacerlo manually..the manera pasada por ahora sólo para mi propio entendimiento.
Además, lo que me molesta de esto:
list.AddRange(str.Split(';').Select(Int32.Parse));
es que no tengo ni idea:
- Cómo empujón en un TryParse allí en su lugar.
- ¿Y si el
str.Split(';').Select(Int32.Parse)
solo falla por cualquier razón ... entonces el método que esta AddRange reside en que va a estallar y, a menos agrego un try/catch alrededor de todo esto, estoy jodido si no lo hago manejarlo apropiadamente
Usando TryParse aquí es un grave error: http://en.wikipedia.org/wiki/GIGO –