Powiel możliwe:
Parsing numbers safely and locale-sensitivelySprawdzanie liczby dziesiętne w sposób wrażliwy locale w Java
Jak mogę potwierdzić ciągów znaków zawierających cyfry dziesiętne w sposób locale wrażliwe? NumberFormat.parse pozwala na zbyt wiele, a Double.parseDouble działa tylko dla angielskich ustawień narodowych. Oto, co starałem:
public static void main(String[] args) throws ParseException {
Locale.setDefault(Locale.GERMAN);
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault());
Number parsed = numberFormat.parse("4,5.6dfhf");
System.out.println("parsed = " + parsed); // prints 4.5 instead of throwing ParseException
double v = Double.parseDouble("3,3"); // throws NumberFormatException, although correct
}
Gdyby to wyjątek, jeśli locale jest niemiecki, a wejście jest '3.3' zamiast' 3,3'? – jlordo
'Liczba przeanalizowana = liczbaFormat.parse (" 4.5.6dfhf ");' działa również i produkuje '456' ... Eurgh ... – assylias
jlordo: przynajmniej powinien zaakceptować poprawne numery ... – WannaKnow