java - 将字符串转换为适当的数据类型

标签 java string date

我有一个 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/

相关文章:

c - 在c中获取像数组一样的char元素

string - kotlin 字符串中的两个并发字符串替换

javascript - (Fullcalendar 4 VueJs) Swap header titleFormat Month and Day

Java getTimeZone() 对于不同类型的输入表现不同

r - as.date函数中的月份语言

java - 如何使用 Spark 将分区键保存在文件中

java - 在创建eclipse向导中生成类并添加Annotation

c# - 使用正则表达式按非数字和数字拆分字符串

java - 如何在运行时使用javac编译器设置类路径?

java - 如何在java中创建一个自动关闭的消息框