Правильно определить является ли строка целым числом
От: PVitaliy Украина  
Дата: 18.05.05 19:30
Оценка:
Добрый день.

Подскажите самый правильный способ определения, является ли строка целым числом. А то решения типа: использовать регулярные выражения, или заключать Int32.Parse в try-catch не кажется мне очень уж класным решением. В дельфи была прекрасная функция для этого -- val. Очень не верится что в дотнете нету аналога.

Заранее спасибо
Re: Правильно определить является ли строка целым числом
От: Mab Россия http://shade.msu.ru/~mab
Дата: 18.05.05 20:23
Оценка:
PV>Очень не верится что в дотнете нету аналога.
В FW 1.1 нет. В FW 2.0 есть TryParse.
RE: Правильно определить является ли строка целым числом
От: Аноним  
Дата: 18.05.05 20:00
Оценка:
Есть Double.TryParse со схожим функционалом.
А чем регекспы не нравятся то?
Раб, который обожает своего хозяина, уже не раб, а холуй.
В.И. Ульянов.


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
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;
}

Anatoly Lubarsky: Weblog


данное сообщение получено с www.gotdotnet.ru
ссылка на оригинальное сообщение
Re[2]: Правильно определить является ли строка целым числом
От: Oyster Украина https://github.com/devoyster
Дата: 19.05.05 06:15
Оценка: 1 (1)
Здравствуйте, Mab, Вы писали:

PV>>Очень не верится что в дотнете нету аналога.

Mab>В FW 1.1 нет. В FW 2.0 есть TryParse

Dimon aka Manowar выше уже написал про замечательный double.TryParse() в FW 1.1. Его, кстати, можно вызывать с флагом NumberStyles.Integer...
Re[3]: Правильно определить является ли строка целым числом
От: Mab Россия http://shade.msu.ru/~mab
Дата: 19.05.05 08:05
Оценка: +1
O>Dimon aka Manowar выше уже написал про замечательный double.TryParse() в FW 1.1. Его, кстати, можно вызывать с флагом NumberStyles.Integer...
Все это здорово, но то, что он вернет true, вовсе не дает гарантии, что на входе у нас валидное число, помещающееся в int, так что последующий int.Parse может кинуть exception. Так что стоит как минимум проверить число на диапазон.

С int64 ситуация еще хуже: если преварительно сделать TryParse в double, то получим потерю точности.
Re: Правильно определить является ли строка целым числом
От: Osama  
Дата: 19.05.05 08:14
Оценка:
Здравствуйте, 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]: Правильно определить является ли строка целым числом
От: PVitaliy Украина  
Дата: 19.05.05 08:25
Оценка:
Здравствуйте, Osama, Вы писали:

O>Здравствуйте, PVitaliy, Вы писали:


вообще говоря double.TryParse() для меня подойдет как раз, проблем с переполнением у меня не предвидется. Та и похоже что она покрывает 90% случаев проверки преобразования.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.