Я бы посчитал точно , что вам нужно определить. «Численно» поначалу более неопределенно, чем кажется. Рассмотрите следующие строки, и хотите ли вы считать их числовыми:
- "NaN"
- "Нан"
- "Бесконечность"
- "0,000000000000000000000000000000000000000000000000001"
- "1e5"
- "1e500"
- "1000"
- "+ 1"
Использование Double.TryParse
(с культурой en-GB - не забывайте о культурных проблемах!) Даст вам True, False, True, True (несмотря на то, что он не представлен), True, False True, True.
Если вы хотите сказать, будет ли более поздний вызов Double.TryParse
успешным, вызов здесь будет наиболее точным решением. Если вы используете некоторые другие критерии, регулярное выражение вполне может быть более подходящим. Пример критерия, который вы можете использовать:
- Может быть + или -, но только в первом символе
- У любого персонажа может быть один период. Вы можете избежать одного в конце - если "1" быть действительным?
- За исключением вышеприведенного, все символы должны быть цифрами
Это запретило бы все, кроме четвертого и последнего приведенных выше примеров.
РЕДАКТИРОВАТЬ: я заметил, что название вопроса включает в себя "целое число". Это в значительной степени уменьшает проверку спецификации до:
- Вы хотите разрешить начальные нули (например, -00012)?
- Какой диапазон?
- Вам нужны только десятичные дроби (вместо шестнадцатеричных и т.д.)?
- Вам нужно принять тысячи разделителей?
- Какова ваша политика в отношении пробелов в начале / конце?