如果有一个包含数字 string 的字符串变量,是否有任何函数可以识别该值是否可以转换为 int、double 或其他任何东西?我需要java中的函数名
问问题
98 次
3 回答
1
String sent3 = "123";
System.out.println(sent3.matches("[0-9]+"));
System.out.println(sent3.matches("[0-9]+\\.[0-9]+"));// for double
输出:- 真
如果输出是true
,则可以将其转换为 int。
于 2013-11-13T05:57:18.187 回答
1
String test = "1234";
System.out.println(test.matches("-?\\d+"));
test = "-0.98";
System.out.println(test.matches("-?\\d+\\.\\d+"));
第一个匹配(即打印真)前面带有可选符号的任何整数(非整数)。第二个匹配任何带有可选符号的值,在所需的小数点前至少一位数,并且至少在小数点后一位数。int
-
double
-
此外,函数名称是String.matches
并且它使用正则表达式。
于 2013-11-13T06:09:39.117 回答
1
我的解决方案涉及尝试将字符串解析为各种类型,然后查找 Java 可能抛出的异常。这可能是一个低效的解决方案,但代码相对较短。
public static Object convert(String tmp)
{
Object i;
try {
i = Integer.parseInt(tmp);
} catch (Exception e) {
try {
i = Double.parseDouble(tmp);
} catch (Exception p) {
return tmp; // a number format exception was thrown when trying to parse as an integer and as a double, so it can only be a string
}
return i; // a number format exception was thrown when trying to parse an integer, but none was thrown when trying to parse as a double, so it is a double
}
return i; // no numberformatexception was thrown so it is an integer
}
然后,您可以将此函数与以下代码行一起使用:
String tmp = "3"; // or "India" or "3.14"
Object tmp2 = convert(tmp);
System.out.println(tmp2.getClass().getName());
您可以将函数转换为内联代码以测试它是否为整数,例如:
String tmp = "3";
Object i = tmp;
try {
i = Integer.parseInt(tmp);
} catch (Exception e) {
// do nothing
}
我有点马虎,试图捕捉正常的异常,这是相当通用的——我建议你改用“NumberFormatException”。
于 2013-11-13T06:10:12.840 回答