Я знаю, что варианты этого вопроса задавались часто раньше (см. здесь и здесь), но это не дубликат точный.
Я хотел бы проверить, является ли число String числом, и поэтому я хотел бы сохранить его как double. Есть несколько способов сделать это, но все они кажутся неуместными для моих целей.
Одним из решений было бы использовать Double.parseDouble(s) или аналогично new BigDecimal(s). Однако эти решения не работают, если есть запятые (так что "1,234" приведет к исключению). Я мог бы, конечно, удалить все запятые, прежде чем использовать эти методы, но это, похоже, создает множество проблем в других локалях.
Я посмотрел на Apache Commons NumberUtils.isNumber(s), но он страдает от одной и той же проблемы с запятой.
Я считал NumberFormat или DecimalFormat, но они казались слишком мягкими. Например, "1A" отформатируется на "1" вместо указания того, что это не число. Кроме того, что-то вроде "127.0.0.1" будет считаться числом 127 вместо того, чтобы указывать, что это не число.
Я чувствую, что мои требования не настолько экзотичны, что я первый, кто это сделал, но ни одно из решений не делает именно то, что мне нужно. Я полагаю, что даже я не знаю точно, что мне нужно (иначе я мог бы написать собственный парсер), но я знаю, что вышеупомянутые решения не работают по указанным причинам. Существует ли какое-либо решение, или мне нужно выяснить, что мне нужно, и написать для него свой собственный код?