我正在寻找一种方法来检查是否可以将字符串转换为int。
以下link表示这是不可能的,但由于新的Java
版本可用,我想查看。
答案 0 :(得分:3)
使用异常来控制流量并不是一个好主意 - 它们只应用作例外。
这是正则表达式解决方案的典型问题:
class ValidNumber {
// Various simple regexes.
// Signed decimal.
public static final String Numeric = "-?\\d*(.\\d+)?";
// Signed integer.
public static final String Integer = "-?\\d*";
// Unsigned integer.
public static final String PositiveInteger = "\\d*";
// The valid pattern.
final Pattern valid;
public ValidNumber(String validRegex) {
this.valid = Pattern.compile(validRegex);
}
public boolean isValid(String str) {
return valid.matcher(str).matches();
}
}
答案 1 :(得分:2)
Java 8不会通过类型解析来更改任何内容。所以你仍然像这样编写自己的typeParser:
public Integer tryParse(String str) {
Integer retVal;
try {
retVal = Integer.parseInt(str);
} catch (NumberFormatException nfe) {
retVal = 0; // or null if that is your preference
}
return retVal;
}
答案 2 :(得分:2)
您可能希望考虑Apache Commons的NumberUtils.isDigits方法。它给出了问题的布尔答案,并且是安全的。
对于可能包含float
或double
等小数点的更广泛数字,请使用NumberUtils.isParsable。