如何解析字符串并根据格式字符串将其转换为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]
)完全兼容。
对不起,我没有正确复制代码…我想这就解决了你提到的三种情况……
string input = "12.00";
double validationCheck = Convert.ToDouble(input);
string validationCheck1 = validationCheck.ToString("0.00", CultureInfo.InvariantCulture);
if (input!=validationCheck1) /* Validation Failed */ ;
你还需要检查异常