如何确定字符串是否是C#中的数字

Lar*_*rup 11 .net c# string value-type

我正在开发一个工具,我需要将字符串值转换为正确的对象类型.例如,将字符串转换"2008-11-20T16:33:21Z"DateTime值.数值喜欢"42""42.42"必须转换成一个Int32值和Double分别值.

检测字符串是整数还是数字的最佳和最有效的方法是什么?是Int32.TryParseDouble.TryParse要走的路?

Dav*_*emp 20

Int.TryParseDouble.TryParse有实际返回数字的好处.

类似的东西Regex.IsMatch("^\d+$")有一个缺点,你仍然需要再次解析字符串以获取值.


Mar*_*ell 9

在效率方面,是的,TryParse通常是首选路线.

如果您事先知道(例如,通过反射)目标类型 - 但不想使用switch大块,您可能有兴趣使用TypeConverter- 例如:

        DateTime foo = new DateTime(2008, 11, 20);
        TypeConverter converter = TypeDescriptor.GetConverter(foo);
        string s = converter.ConvertToInvariantString(foo);
        object val = converter.ConvertFromInvariantString(s);
Run Code Online (Sandbox Code Playgroud)