我有一个 String
,它可以有许多不同的格式
。我需要能够在 runtime
识别值的实际类型,然后将值转换为该类型。
例如。如果我有一个 String
Fri Feb 08 07:30:00 GMT 2013
这实际上是一个 Date
和一个 String
应转换为 date 对象
并按此返回。
我目前对这个问题的解决方案是“尝试”将其转换为数据类型,如果转换成功那么一切都很好,如果转换失败则继续下一次转换尝试。这可行,但丑陋且无法维护,我相信已经有更好的解决方案。
谢谢。
最佳答案
您可以像这样为每种数据类型使用单独的正则表达式:
private final static Pattern DATE_PATTERN =
Pattern.compile (
"(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat) " +
"(?:Jan|Feb|Mar|Apr|May|June?|July?|Aug|Sept?|Oct|Nov|Dec) " +
"\\d\\d \\d\\d:\\d\\d:\\d\\d \\S+ \\d\\d\\d\\d");
private final static Pattern DOUBLE_PATTERN =
Pattern.compile (
"[\\+\\-]?\\d+\\.\\d+(?:[eE][\\+\\-]?\\d+)?");
private final static Pattern INTEGER_PATTERN =
Pattern.compile (
"[\\+\\-]?\\d+");
public static Object stringToObject (String string)
{
if (DATE_PATTERN.matcher (string).matches ())
return stringToDate (string);
else if (DOUBLE_PATTERN.matcher (string).matches ())
return Double.valueOf (string);
else if (INTEGER_PATTERN.matcher (string).matches ())
return Integer.valueOf (string);
else return string;
}
关于java - 将字符串转换为适当的数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14770345/