Here's a simple solution using regular expressions:
var number = Regex.Match(input, @"(.*\D|^)(\d+)").Groups[2].Value;
Or a slightly different solution with a little bit of Linq thrown in for good measure:
var number = Regex.Matches(input, @"\d+").Cast<Match>().Last().Value;
And here's a solution using a plain old for
loop; no Linq or regex required:
int start = 0, end = 0;
for (var i = input.Length - 1; i >= 0; i--) {
if (char.IsDigit(input[i]))
{
end = i + 1;
while (i >= 0 && char.IsDigit(input[i])) i--;
start = i + 1;
break;
}
}
var number = input.Substring(start, end - start);