Ce qui suit entraîne un Exception
:
String p="1,234";
Double d=Double.valueOf(p);
System.out.println(d);
Existe-t-il un meilleur moyen d'analyser "1,234"
pour obtenir 1.234
que p = p.replaceAll(",",".");
:?
replaceAll(",",".")
remplace toutes les virgules par des points. S'il n'y a pas de virgule, cela ne fait rien. Double.valueOf()
fonctionne (uniquement) avec les chaînes qui utilisent le point comme séparateur décimal. Rien ici n'est affecté par les paramètres régionaux par défaut actuels. docs.oracle.com/javase/8/docs/api/java/lang/…
replaceAll(",",".")
est que cela ne fonctionnera que s'il y a une seule virgule: c'est-à-dire: 1 234 567 lancera java.lang.NumberFormatException: multiple points
. Une expression régulière avec une anticipation positive suffira p.replaceAll(",(?=[0-9]+,)", "").replaceAll(",", ".")
Plus à: regular-expressions.info/lookaround.html