Я разработчик на C # и не до конца понимаю ваш код, но я бы использовал словарь для сопоставления типа объекта и чего-то еще - я предполагаю, что вы возвращаете значение enum. Вот пример C #. В реальном коде словарь не должен быть построен на каждом вызове метода.
public enum ValueType
{
Unknown, Number, Boolean, Date, String
}
public static ValueType DataType(Object o)
{
Dictionary<Type, ValueType> map =
new Dictionary<Type, ValueType>
{
{typeof (Int32), ValueType.Number},
{typeof (Int64), ValueType.Number},
{typeof (Decimal), ValueType.Number},
{typeof (Single), ValueType.Number},
{typeof (Double), ValueType.Number},
{typeof (Boolean), ValueType.Boolean},
{typeof (DateTime), ValueType.Date},
{typeof (String), ValueType.String}
};
if ((o == null) || (!map.ContainsKey(o.GetType())))
{
return ValueType.Unknown;
}
else
{
return map[o.GetType()];
}
}
У меня был второй взгляд, и похоже, что вы пытаетесь определить тип информации, хранимой в строке, путем ее синтаксического анализа - в этом случае приведенное выше не поможет.