Как уже говорили другие люди, вы можете использовать метод int.TryParse
, хотя, если ваше число действительно не ЧРЕЗВЫЧАЙНО велико, вы можете использовать метод TryParse
других типов, которые имеют больший диапазон, чем int32. (конечно, используя опцию NumberStyles.None
, чтобы избежать знаков и знаков препинания).
Вот разбивка:
int
-2 147 483 648 .. 2 147 483 647
uint
0 .. 4 294 967 295
long
-9 223 372 036 854 775 808 .. 9 223 372 036 854 775 807
ulong
0 .. 18 446 744 073 709 551 615
float
-3.402823e38 .. 3.402823e38
double
-1,79769313486232e308 .. 1,77969313486232e308
decimal
-79228162514264337593543950335 .. 79228162514264337593543950335
Тот, который может анализировать самые большие числа, - Double
. Если вам нужно использовать число, вы потеряете некоторую точность, но он может анализировать действительно длинные числа (хотя вы говорите, что вам не нужно его использовать, так что это не должно быть проблемой). В быстром тесте мне удалось успешно разобрать следующую строку:
79228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335792281625142643375935439503357922816251426433759354395033579228162514264337593543950335234234234234243423
(то есть 308 символов, он потерпит неудачу с еще одним числом)
Тем не менее, если вы не собираетесь использовать число, это может быть излишним, поэтому я бы выбрал регулярное выражение или, еще лучше, цикл, проверяющий, что каждый символ является цифрой.
Если вы хотите немного сойти с ума, вы можете разбить это на несколько строк поменьше и использовать библиотеку задач, чтобы проверить это параллельно: P
(Я знаю, это немного оффтоп сейчас, но если вы действительно хотите это сделать, вы должны проверить parallel.for
и Partition Ranger
, проверить этот клип C9 10 минут: Parallel For Partition Ranger )