C # Strict Int / Разбор с плавающей точкой - PullRequest
1 голос
/ 12 октября 2010

Мне интересно, как реализовать строгий анализ строки в C #.

В частности, я хочу требовать, чтобы строка содержала только число (в формате, специфичном для культуры), а не другие символы.

"1.0"  -> 1.0  
"1.5 " -> fail  
" 1.5" -> fail  
" 1,5" -> fail (if culture is with ".")  
"1,5"  -> fail  

ура!

Ответы [ 3 ]

4 голосов
/ 12 октября 2010

Метод Int32.Parse принимает флаги, охватывающие определенные ситуации, о которых вы упомянули.Посмотрите в MSDN здесь на NumberStyles перечисление.Кроме того, он принимает информацию о форматировании для конкретной культуры.

2 голосов
/ 12 октября 2010

Ознакомьтесь с методами Parse / TryParse типов int, float и double. Они имеют перегрузки , которые позволяют указать CultureInfo и позволяют ограничить принятый формат числа:

string value = "1345,978";
NumberStyles style = NumberStyles.AllowDecimalPoint;
CultureInfo culture = CultureInfo.CreateSpecificCulture("fr-FR");
double number;

if (double.TryParse(value, style, culture, out number))
   Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
   Console.WriteLine("Unable to convert '{0}'.", value);
0 голосов
/ 12 октября 2010

TryParse специально разрешает пробелы до и после числа Double.TryParse ссылка , поэтому он не является достаточно строгим для ваших требований, если вы явно не используете NumberStyles.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...