Java解析int方法无异常

时间:2014-05-27 11:33:13

标签: java string int tryparse

我正在寻找一种方法来检查是否可以将字符串转换为int。

以下link表示这是不可能的,但由于新的Java版本可用,我想查看。

3 个答案:

答案 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方法。它给出了问题的布尔答案,并且是安全的。

对于可能包含floatdouble等小数点的更广泛数字,请使用NumberUtils.isParsable