如何解析字符串并根据格式字符串将其转换为double

本文关键字:字符串 转换 格式 double 何解析 字符 串并 | 更新日期: 2023-09-27 18:05:55

我目前正在构建一个自定义验证控件,我尝试在类似于DateTime.ParseExact函数的双精度中解析数字字符串。

这是我试图存档的内容:

Console.WriteLine(Double.ParseExact("12.00", "0.00", CultureInfo.InvariantCulture).ToString()); // should print "12"
Console.WriteLine(Double.ParseExact("asd", "0.00", CultureInfo.InvariantCulture).ToString()); // should throw FormatException
Console.WriteLine(Double.ParseExact("12.000", "0.00", CultureInfo.InvariantCulture).ToString()); // should throw FormatException, because it has to many decimal digits

我知道我可以简单地解析它没有格式字符串,但我想在这里应用一些更严格的规则。格式字符串可以是标准格式字符串或自定义格式字符串,因此它可以是不同的。

当然,上面的方法是不存在的。以下是DateTime类上的现有方法,它具有相同的功能,但使用DateTime s:

DateTime.ParseExact("2016-09-06T11:57:55.335", "yyyy-MM-ddTHH:mm:ss.fff", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal);

如何为Double做同样的事情?


By the way…

的原因是我正在建立一个自定义的asp.net webforms RangeValidator我从BaseValidator继承。我想使这个控件与DateTime兼容,也是,它必须使用自定义格式字符串,并使用InvariantCulture使其与新的HTML5控件([type=numeric][type=datetime])完全兼容。

如果控件的数字验证部分与DateTime验证部分类似,那就太好了。另外,如果有人输入了错误的数字字符串表示形式,最好拒绝验证器的请求。

如何解析字符串并根据格式字符串将其转换为double

对不起,我没有正确复制代码…我想这就解决了你提到的三种情况……

string input = "12.00";
double validationCheck = Convert.ToDouble(input);
string validationCheck1 = validationCheck.ToString("0.00",  CultureInfo.InvariantCulture);
if (input!=validationCheck1) /* Validation Failed */ ;

你还需要检查异常