Есть несколько вариантов ...
Как и при использовании регулярного выражения:
int result = int.Parse(Regex.Match(input, @"^\d+").Groups[0].Value);
Среди самых быстрых; просто цикл, чтобы найти цифры:
int i = 0;
while (i < input.Length && Char.IsDigit(input, i)) i++;
int result = int.Parse(input.Substring(0, i));
Используйте LastIndexOfAny
, чтобы найти последнюю цифру:
int i = input.LastIndexOfAny("0123456789".ToCharArray()) + 1;
int result = int.Parse(input.Substring(0, i));
(Примечание: разрывы на строки, содержащие цифры после суффикса, например «123asdf123».)
Вероятно, самый быстрый; разбери сам:
int i = 0;
int result = 0;
while (i < input.Length) {
char c = input[i];
if (!Char.IsDigit(c)) break;
result *= 10;
result += c - '0';
i++;
}