我正在尝试编写将字符串转换为数字的通用方法。我可以使用哪个API完成此操作。
private <T extends Number> T parseFromString(String str) {
// convert str to number
}
然后致电:
parseFromString<Double>("120.0");
parseFromString<Integer>("11");
答案 0 :(得分:0)
无需使用泛型,我只需使用:
private static Number parseFromString(String str) throws NumberFormatException {
if (str.matches("\\d+")) {
return Integer.valueOf(str);
} else if (str.matches("[-+]?[0-9]*\\.?[0-9]+")) {
return Double.valueOf(str);
}
throw new NumberFormatException("Number not correct");
}
输出
System.out.println(parseFromString("11")); // 11
System.out.println(parseFromString("112.3")); // 112.3
System.out.println(parseFromString("some not correct strings")); // Number not correct
或者如他的评论中提到的@shmosel,您可以使用:
private static Number parseFromString(String str) throws ParseException {
return NumberFormat.getInstance().parse(str);
}
在此解决方案中,您可能会失去精度,因此可能需要使用语言环境,如:
private static Number parseFromString(String str) throws ParseException {
return NumberFormat.getInstance(Locale.CANADA).parse(str);
}