Подскажите самый правильный способ определения, является ли строка целым числом. А то решения типа: использовать регулярные выражения, или заключать Int32.Parse в try-catch не кажется мне очень уж класным решением. В дельфи была прекрасная функция для этого -- val. Очень не верится что в дотнете нету аналога.
Заранее спасибо
Re: Правильно определить является ли строка целым числом
RE: Правильно определить является ли строка целым числом
От:
Аноним
Дата:
19.05.05 00:46
Оценка:
Добрый день.
Подскажите самый правильный способ определения, является ли строка целым числом. А то решения типа: использовать регулярные выражения, или заключать Int32.Parse в try-catch не кажется мне очень уж класным решением. В дельфи была прекрасная функция для этого -- val. Очень не верится что в дотнете нету аналога.
Заранее спасибо
public static bool IsNumeric(string inputData)
{
Regex _isNumber = new Regex(@"^\d+$");
Match m = _isNumber.Match(inputData);
return m.Success;
}
O>Dimon aka Manowar выше уже написал про замечательный double.TryParse() в FW 1.1. Его, кстати, можно вызывать с флагом NumberStyles.Integer...
Все это здорово, но то, что он вернет true, вовсе не дает гарантии, что на входе у нас валидное число, помещающееся в int, так что последующий int.Parse может кинуть exception. Так что стоит как минимум проверить число на диапазон.
С int64 ситуация еще хуже: если преварительно сделать TryParse в double, то получим потерю точности.
Re: Правильно определить является ли строка целым числом
Здравствуйте, PVitaliy, Вы писали:
PV>Добрый день.
PV>Подскажите самый правильный способ определения, является ли строка целым числом. А то решения типа: использовать регулярные выражения, или заключать Int32.Parse в try-catch не кажется мне очень уж класным решением. В дельфи была прекрасная функция для этого -- val. Очень не верится что в дотнете нету аналога.
PV>Заранее спасибо
Такой вариант не подойдет?
int CheckString(char *str)
{
int stat = 0;
while (*str!='\0')
if (*str>='0' && *str<='9') str++;
else
{
stat = 1;
break;
};
return stat;
// 0 Число
// 1 Неверно
}
Re[2]: Правильно определить является ли строка целым числом
Здравствуйте, Osama, Вы писали:
O>Здравствуйте, PVitaliy, Вы писали:
вообще говоря double.TryParse() для меня подойдет как раз, проблем с переполнением у меня не предвидется. Та и похоже что она покрывает 90% случаев проверки преобразования.