Método de extensión para obtener todos los números positivos contenidos en una cadena:
public static List<long> Numbers(this string str)
{
var nums = new List<long>();
var start = -1;
for (int i = 0; i < str.Length; i++)
{
if (start < 0 && Char.IsDigit(str[i]))
{
start = i;
}
else if (start >= 0 && !Char.IsDigit(str[i]))
{
nums.Add(long.Parse(str.Substring(start, i - start)));
start = -1;
}
}
if (start >= 0)
nums.Add(long.Parse(str.Substring(start, str.Length - start)));
return nums;
}
Si también desea números negativos, simplemente modifique este código para manejar el signo menos ( -
)
Dada esta entrada:
"I was born in 1989, 27 years ago from now (2016)"
La lista de números resultante será:
[1989, 27, 2016]