gpt4 book ai didi

java - 确定字符串是否为数字并在Java中转换?

转载 作者:IT老高 更新时间:2023-10-28 20:27:13 25 4
gpt4 key购买 nike

我知道以前经常有人问过这个问题的变体(例如,参见 herehere),但这不是与这些问题的确切重复.

我想检查 String 是否为数字,如果是,我想将其存储为 double。有几种方法可以做到这一点,但它们似乎都不适合我的目的。

一种解决方案是使用 Double.parseDouble(s) 或类似的 new BigDecimal(s)。但是,如果存在逗号,这些解决方案将不起作用(因此“1,234”会导致异常)。在使用这些技术之前,我当然可以去掉所有逗号,但这似乎在其他语言环境中会带来很多问题。

我查看了 Apache Commons NumberUtils.isNumber(s),但同样存在逗号问题。

我考虑过 NumberFormatDecimalFormat,但这些似乎太宽松了。例如,“1A”被格式化为“1”,而不是表示它不是一个数字。此外,诸如“127.0.0.1”之类的内容将被计为数字 127,而不是表示它不是数字。

我觉得我的要求不是那么奇特,以至于我是第一个这样做的人,但没有一个解决方案完全符合我的需要。我想即使我不知道确切我需要什么(否则我可以编写自己的解析器),但我知道上述解决方案由于所示原因不起作用。是否存在任何解决方案,或者我需要准确地弄清楚我需要什么并为此编写自己的代码?

最佳答案

听起来很奇怪,但我会尝试关注 this answer并使用 java.util.Scanner

Scanner scanner = new Scanner(input);
if (scanner.hasNextInt())
System.out.println(scanner.nextInt());
else if (scanner.hasNextDouble())
System.out.println(scanner.nextDouble());
else
System.out.println("Not a number");

对于 1A127.0.0.11,2346.02e-23 等输入,我得到了以下输出:

Not a number
Not a number
1234
6.02E-23

Scanner.useLocale 可用于更改为所需的语言环境。

关于java - 确定字符串是否为数字并在Java中转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com