如果参数是0到255之间的整数的String表示(包括0和255),我需要我的代码返回true,否则返回false。
例如: 字符串" 0"," 1"," 2" ...." 254"," 255"是有效的。
填充字符串(例如" 00000000153")也有效。
isDigit显然也可以工作,但我想知道这是否更有利和/或这甚至可以与Padded Strings一起使用?
public static boolean isValidElement(String token) {
int foo = Integer.parseInt("token");
if(foo >= 0 && foo <= 255)
return true;
else
return false;
}
答案 0 :(得分:2)
isDigit
不起作用,因为它需要一个字符作为输入,如果是0到9之间的数字,则返回true。[参考:isDigit javadoc]
因为在您的情况下,您需要测试从0到255的所有数字的字符串表示,因此您必须使用parseInt
。
此外,还通过捕获NumberFormatException
检查传递的令牌是否为有效数字,如果它不是有效整数,则返回false。
public static boolean isValidElement(String token) {
try{
int foo = Integer.parseInt(token);
if(foo >= 0 && foo <= 255)
return true;
else
return false;
} catch (NumberFormatException ex) {
return false;
}
}
答案 1 :(得分:0)
您可以使用正则表达式:
return token.matches("1?\\d{1,2}|2[0-4]\\d|25[0-5]");
答案 2 :(得分:0)
因此,如果字符串不是有效数字,Integer.parseInt将抛出NumberFormatException,这只是要记住的事情。
我会使用commons-math3库中的NumberUtils.isDigit()来检查,然后使用Integer.valueOf这是一个有效的数字解析器。
if (NumberUtils.isDigit(token)) {
int foo = Integer.valueOf(token);
return (foo >=0 && foo <=255);
}
答案 3 :(得分:0)
Integer.parseInt会抛出NumberFormatException。考虑到这一点,您可以使用此代码段。 不需要其他依赖项。
public static boolean isValidElement(String token) {
try {
int value = Integer.parseInt(token);
return value >= 0 && value <= 255;
} catch(NumberFormatException e) {
return false;
}
}