A seguir está resultando em um Exception:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
Existe uma maneira melhor de analisar "1,234"para obter do 1.234que p = p.replaceAll(",",".");:?
replaceAll(",",".")substitui todas as vírgulas por pontos. Se não houver vírgulas, não fará nada. Double.valueOf()funciona (apenas) com cadeias que usam ponto como separador decimal. Nada aqui é afetado pela localidade padrão atual. docs.oracle.com/javase/8/docs/api/java/lang/…
replaceAll(",",".")é que só funcionará se houver uma única vírgula: ie: 1.234.567 será lançada java.lang.NumberFormatException: multiple points. A regex com antecipação positiva será suficiente p.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".")Mais em: regular-expressions.info/lookaround.html