Następujące powoduje Exception:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
Czy istnieje lepszy sposób do analizowania "1,234"dostać 1.234niż: p = p.replaceAll(",",".");?
replaceAll(",",".")zastępuje wszystkie przecinki kropkami. Jeśli nie ma przecinków, nic nie robi. Double.valueOf()działa (tylko) z łańcuchami, które używają kropki jako separatora dziesiętnego. Na nic tutaj nie ma wpływu bieżące domyślne ustawienie regionalne. docs.oracle.com/javase/8/docs/api/java/lang/…
replaceAll(",",".")jest to, że zadziała to tylko wtedy, gdy jest pojedynczy przecinek: np .: 1,234,567 zostanie rzucone java.lang.NumberFormatException: multiple points. Wystarczy wyrażenie regularne z dodatnim wyprzedzeniem p.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".")Więcej na: regular-expressions.info/lookaround.html