Método de extensão para obter todos os números positivos contidos em uma string:
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;
}
Se você também deseja números negativos, modifique esse código para manipular o sinal de menos (-
)
Dada esta entrada:
"I was born in 1989, 27 years ago from now (2016)"
A lista de números resultante será:
[1989, 27, 2016]