列表的常见类型<string> </string>

时间:2013-06-21 08:39:21

标签: c# string list tryparse

我有一个字符串列表,想知道他们是否共享除字符串以外的任何预定义的C#类型,另外我想检查日期。

除了TryParse的级联之外,还有现成的方法吗?

更新

这些字符串的来源是excel csv文件,例如

标识;公司;平均工资;创始日期
123;微软; 2350.78; 1911年2月1日
65;苹果; 2100.50; 1934年7月16日

对于不适用于计算机的人来说,显而易见的类型,但如果添加此附加行,则“Id”列的最具体类型将为字符串。

4A; IBM; 2800.0; 1923年1月1日

这个想法可能类似于类型推断 Haskell Type inference

2 个答案:

答案 0 :(得分:1)

您可以尝试使用Regex查找字符串是否可以转换为类型,以下是一些正则表达式示例http://www.regular-expressions.info/examples.html

答案 1 :(得分:0)

由于输入是CSV文件,因此应事先知道数据类型。 即你已经知道ID是一个字符串,公司是一个字符串,平均薪资是一个双倍,创始日期是一个日期等。

您应该编写规范并在数据格式错误时优雅地处理用户错误。

我有一个可能有帮助的课程:

/// <summary>
        /// Translate a text value to its setting type
        /// </summary>
        /// <param name="type">Type to convert to</param>
        /// <param name="value">string to cast</param>
        /// <returns></returns>
        private static object CastHelper(Type type, string value)
        {
            switch (type.Name)
            {
                case "Int32":
                    return Convert.ToInt32(value);

                case "Byte":
                    return Convert.ToByte(value);

                case "Boolean":
                    return Convert.ToBoolean(value);

                case "Color":
                    {
                        try
                        {
                            string[] rgb = value.Split(',');
                            return Color.FromArgb(Convert.ToInt32(rgb[0]), Convert.ToInt32(rgb[1]), Convert.ToInt32(rgb[2]));
                        }
                        catch (Exception)
                        {
                            return Color.FromName(value);
                        }

                    }
                case "Font":
                    return (new FontConverter().ConvertFromString(value));

                default:
                    return value;
            }
        }