C#严格Int / Float解析

时间:2010-10-12 14:43:47

标签: c# parsing

我想知道如何在C#中实现对字符串的严格解析。

具体来说,我想要求字符串只包含数字(以特定于文化的格式),而不包含其他字符。

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

干杯!

3 个答案:

答案 0 :(得分:4)

Int32.Parse方法接受覆盖您提及的某些情况的标记。在NumberStyles枚举上查看into MSDN here。此外,它接受特定于文化的格式信息。

答案 1 :(得分:2)

查看ParseTryParseint类型的float / double方法。他们有overloads,允许指定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);

答案 2 :(得分:0)

TryParse专门允许在数字Double.TryParse reference之前和之后使用空格,因此除非您明确使用NumberStyles,否则它对您的要求不够严格。