如何确定字符串是Double还是Long类型

MaV*_*SCy 2 java regex types

我有一个ResultSet,我迭代,我创建一个像view(html)的报告.问题是有些列返回Long值(作为SQL中数学函数的结果).

有没有一种简单的方法可以通过DataType识别这个值?

让我们说我想做这样的事情

String x = rs.getString(1);
if(MyUtilClass.isOfTypeLong(x)){
  //implement my bussiness logig
}
Run Code Online (Sandbox Code Playgroud)

我看过这篇文章你如何确定字符串中包含的数据类型?.如果现在没有更好的东西,我将继续使用regEx解决方案.

小智 5

你为什么不尝试Long.valueOf(String)先解析它作为一个Long,否则要求解析它作为一个DoubleDouble.valueOf(String)

NumberFormatException如果无法解析字符串,则抛出一个.

public static void main(String[] args) throws Exception {
    final String s1 = "1234567890";
    System.out.println(isParsableAsLong(s1));    // true
    System.out.println(isParsableAsDouble(s1));  // true

    final String s2 = "1234.56789";
    System.out.println(isParsableAsLong(s2));   // false
    System.out.println(isParsableAsDouble(s2)); // true
}

private static boolean isParsableAsLong(final String s) {
    try {
        Long.valueOf(s);
        return true;
    } catch (NumberFormatException numberFormatException) {
        return false;
    }
}

private static boolean isParsableAsDouble(final String s) {
    try {
        Double.valueOf(s);
        return true;
    } catch (NumberFormatException numberFormatException) {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)