如何检查字符串是否为数字
How to check if a String is a number or not
这里就不多解释了,我需要检查一个字符串是否是一个数字,我尝试了这个推荐的方法,但有时会失败:
try {
Double.parseDouble((String) myString);
// CODE IF IT IS A NUMBER HERE
} catch (NumberFormatException e) {
// CODE IF IT IS NOT A NUMBER HERE
e.printStackTrace();
}
使它失败的字符串是C:\Users\xx11\Desktop\Example\Example.doc
。
我认为这与 11\D
部分有关,但我不确定也无法证明。
有没有经验丰富的人知道为什么会发生这种情况以及如何解决?
谢谢。
Double.parseDouble()
不会尝试在输入中为您查找数字。它期望输入作为一个整体是一个数字。同样适用于 Integer.parseInt()
等
您需要首先提取可能是数字的内容,然后尝试解析它。例如:
private static final Pattern NUMERIC = Pattern.compile("\d+(\.\d+)?");
// In code:
final Matcher m = NUMERIC.matcher(input);
while (m.find()) {
// try and parse m.group())
}
Double.parseDouble()
不是推荐的方法。由谁推荐,为了什么?它使用 double
文字 in Java source code 的规则,其中 99% 不是您希望程序的馈送方式(它允许指数、十六进制等等)。哦,它不区分语言环境。
如果输入来自人工,您最好使用 DecimalFormat
,它可以识别区域设置并且可以轻松自定义(它甚至可以控制舍入模式):
DecimalFormat fmt = new DecimalFormat();
Number number = fmt.parse(input);
从 DecimalFormat 中,您可以获得 Integer、Number 或 BigDecimal,具体取决于该数量描述的内容以及您打算如何使用它。
不要被次要的事情分心。用于此类任务的实用程序。例如 Apache Commons Lang:
NumberUtils.isNumber(s);
什么可以是esear?
这里就不多解释了,我需要检查一个字符串是否是一个数字,我尝试了这个推荐的方法,但有时会失败:
try {
Double.parseDouble((String) myString);
// CODE IF IT IS A NUMBER HERE
} catch (NumberFormatException e) {
// CODE IF IT IS NOT A NUMBER HERE
e.printStackTrace();
}
使它失败的字符串是C:\Users\xx11\Desktop\Example\Example.doc
。
我认为这与 11\D
部分有关,但我不确定也无法证明。
有没有经验丰富的人知道为什么会发生这种情况以及如何解决?
谢谢。
Double.parseDouble()
不会尝试在输入中为您查找数字。它期望输入作为一个整体是一个数字。同样适用于 Integer.parseInt()
等
您需要首先提取可能是数字的内容,然后尝试解析它。例如:
private static final Pattern NUMERIC = Pattern.compile("\d+(\.\d+)?");
// In code:
final Matcher m = NUMERIC.matcher(input);
while (m.find()) {
// try and parse m.group())
}
Double.parseDouble()
不是推荐的方法。由谁推荐,为了什么?它使用 double
文字 in Java source code 的规则,其中 99% 不是您希望程序的馈送方式(它允许指数、十六进制等等)。哦,它不区分语言环境。
如果输入来自人工,您最好使用 DecimalFormat
,它可以识别区域设置并且可以轻松自定义(它甚至可以控制舍入模式):
DecimalFormat fmt = new DecimalFormat();
Number number = fmt.parse(input);
从 DecimalFormat 中,您可以获得 Integer、Number 或 BigDecimal,具体取决于该数量描述的内容以及您打算如何使用它。
不要被次要的事情分心。用于此类任务的实用程序。例如 Apache Commons Lang:
NumberUtils.isNumber(s);
什么可以是esear?