所以我想检查我的String是否可以是数字。
我不想为此写任何样板代码。
通用Apache isNumeric()
有一种方法
但是对于""
空白值,它为true,对于十进制值(12.3
,它为false。
那么还有其他方法可以做到吗?
答案 0 :(得分:1)
最简单的方法是通过方法进行解析。
exp。
try {
double d = Double.parseDouble(STRING_TO_TEST);
} catch (NumberFormatException | NullPointerException e) {
//do logic
}
return true;
但是,如果您不需要这个,Apache Commons有一个有用的方法:
NumberUtils.isCreatable("22.6") ;
返回true
NumberUtils.isCreatable("") ;
返回假
答案 1 :(得分:1)
public boolean isNumber(String s) {
try {
Double.parseDouble(yourString);
return true;
} catch(Exception e) {
return false;
}
}
如果Java可以解决问题,这将为您提供真实的感觉
答案 2 :(得分:0)
您可以为此使用regex
。 regex
为: [0-9]+
以下是一些示例:
String regex = "[0-9]+";
System.out.println("12".matches(regex));
System.out.println("abc".matches(regex));
System.out.println("".matches(regex));
如果还要考虑十进制值,则可以使用 [0-9]+(\.)?[0-9]*
作为正则表达式。
答案 3 :(得分:0)
是的,在Apache Commons库中,存在具有以下给定方法的NumberUtils类(org.apache.commons.lang3.math.NumberUtils)。
public static boolean isParsable(String str)
这将检查给定的String是否为可解析的数字。 请在https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/math/NumberUtils.html#isParsable-java.lang.String-
中找到详细的文档答案 4 :(得分:0)
使用Apache Commons Lang 3.5及更高版本:NumberUtils.isCreatable或StringUtils.isNumeric。