Sto cercando un metodo che restituisce un valore booleano se la stringa passata è un numero valido (ad esempio "123.55e-9", "-333.556 "). Io Non vogliono fare proprio:Libreria Java per verificare se una stringa contiene un numero * senza * eccezioni
public boolean isANumber(String s) {
try {
BigDecimal a = new BigDecimal(s);
return true;
} catch (NumberFormatException e) {
return false;
}
}
Chiaramente, la funzione dovrebbe utilizzare una macchina a stati (DFA) per analizzare la stringa per assicurarsi che non validi esempi non ingannare esso (ad esempio "-21, 22.22.2 "," 33-2 "). Sai se esiste una biblioteca del genere? Non voglio davvero scriverlo da solo perché è un problema così ovvio che sono sicuro che reinventerò la ruota.
Grazie,
Nick
Perché proprio non vuoi usare l'analisi da BigDecimal? È il modo più semplice, davvero. – Jorn
Mi piacerebbe sapere perché non vuoi usare lo snippet che hai fornito? Se hai bisogno di _use_ il numero devi analizzarlo? È solo per verificare che una stringa possa andare al back-end così com'è? –
Perché le eccezioni non sono valide per questo caso. Le eccezioni sono, beh, per le eccezioni non per il controllo del programma. – Malax