Следующее приводит к Exception:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
Есть ли лучший способ разобрать, "1,234"чтобы получить, 1.234чем p = p.replaceAll(",",".");:?
replaceAll(",",".")заменяет все запятые на точки. Если запятых нет, то ничего не происходит. Double.valueOf()работает (только) со строками, которые используют точку в качестве десятичного разделителя. Ничто здесь не зависит от текущей локали по умолчанию. docs.oracle.com/javase/8/docs/api/java/lang/…
replaceAll(",",".")том, что он будет работать только при наличии единственной запятой: то есть: 1 234 567 выбрасывает java.lang.NumberFormatException: multiple points. Будет достаточно регулярного выражения с положительным взглядомp.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".") Подробнее на: регулярно-экспрессии.info/lookaround.html