Я пытаюсь разобрать строку безопасно,Проверьте число слишком велико или не число
public <T> long safeParseLong(T s){
try {
return Long.parseLong(s.toString());
}catch (NumberFormatException e){
return 0;
}
}
Это всегда будет работать, и если строка не интерпретируемая, он возвращает 0.
Однако есть ли способ узнать, что причина в том, чтобы он был неповторим? В частности, я хочу знать, не является ли это числом ("foo"
) или слишком большим номером (≥ 9223372036854775808).
Наивный подход состоит в том, чтобы использовать регулярное выражение и проверить, имеет ли он числовое, но имеет слишком много цифр. – Falmarri
Мне не нравится этот «безопасный» метод. Что происходит, например, s = «0»? Откуда вы знаете, была ли это ошибка или это было фактическое значение? И s = null? – m0skit0
Разделите его на https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html#BigInteger-java.lang.String- и выполните проверку вручную перед вызовом 'longValue() '. – Marco13