确定字符串是否是一个数字并在Java中转换?
2022-09-01 20:29:56
我知道这个问题的变体以前经常被问到(例如,请参阅此处和此处),但这并不是这些变体的精确副本。
我想检查a是否是一个数字,如果是这样,我想将其存储为.有几种方法可以做到这一点,但所有这些方法似乎都不适合我的目的。String
double
一种解决方案是使用 或类似方式 。但是,如果存在逗号,则这些解决方案不起作用(因此“1,234”会导致异常)。当然,在使用这些技术之前,我可以去掉所有的逗号,但这在其他语言环境中似乎会带来很多问题。Double.parseDouble(s)
new BigDecimal(s)
我看了Apache Commons,但也有同样的逗号问题。NumberUtils.isNumber(s)
我考虑过或,但这些似乎太宽松了。例如,“1A”被格式化为“1”,而不是表示它不是一个数字。此外,像“127.0.0.1”这样的东西将被计为数字127,而不是指示它不是一个数字。NumberFormat
DecimalFormat
我觉得我的要求不是那么奇特,我是第一个这样做的人,但没有一个解决方案能完全满足我的需求。我想即使我也不知道我需要什么(否则我可以编写自己的解析器),但我知道上述解决方案由于上述原因而不起作用。是否存在任何解决方案,或者我是否需要精确地找出我需要什么并为其编写自己的代码?