Di seguito si ottiene un Exception:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
C'è un modo migliore per analizzare "1,234"per ottenere 1.234di p = p.replaceAll(",",".");:?
replaceAll(",",".")sostituisce tutte le virgole con punti. Se non ci sono virgole, non fa nulla. Double.valueOf()funziona (solo) con stringhe che usano il punto come separatore decimale. Nulla qui è influenzato dalle impostazioni internazionali predefinite correnti. docs.oracle.com/javase/8/docs/api/java/lang/…
replaceAll(",",".")è che funzionerà solo se è presente una sola virgola: ovvero: verrà lanciato 1.234.567 java.lang.NumberFormatException: multiple points. Una regex con lookahead positivo sarà sufficiente p.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".")Altro su: regular-expressions.info/lookaround.html