Java 如何修复DecimalFormat.parse()在android7之前版本和android7中的不同行为导致的字符串验证问题?
在android 7之前的版本中,当您将字符串“123 45”作为“value”传递给上述方法时,它会抛出parse异常,因为DecimalFormat.parse()为“123 45”返回null。在Android 7中,该方法返回“12345”,因为DecimalFormat.parse()返回“12345” 上述行为的原因是由于android团队进行了以下迁移。Java 如何修复DecimalFormat.parse()在android7之前版本和android7中的不同行为导致的字符串验证问题?,java,android,android-7.0-nougat,Java,Android,Android 7.0 Nougat,在android 7之前的版本中,当您将字符串“123 45”作为“value”传递给上述方法时,它会抛出parse异常,因为DecimalFormat.parse()为“123 45”返回null。在Android 7中,该方法返回“12345”,因为DecimalFormat.parse()返回“12345” 上述行为的原因是由于android团队进行了以下迁移。 我正在寻找可以解析给定字符串的十进制格式的替代方案,该解决方案也应该考虑现场信息。Double.parseDouble对我有效
我正在寻找可以解析给定字符串的十进制格式的替代方案,该解决方案也应该考虑现场信息。Double.parseDouble对我有效,但它不考虑语言环境。我不确定你是否有效,但如果你在解析金钱,那么就利用
Joda Money
库我不确定你是否有效,但如果你在解析金钱,那么就利用Joda Money
库
private static double javaNumberFormat(String value, Locale locale) throws ParseException {
ParsePosition parsePosition = new ParsePosition(0);
DecimalFormat numFormat = (java.text.DecimalFormat) NumberFormat.getNumberInstance(locale);
Number number = numFormat.parse(value, parsePosition);
if(number == null || parsePosition.getIndex() != value.length())
throw new ParseException("Invalid input", parsePosition.getIndex());
return number.doubleValue();
}