我想检查传递给 Integer.valueOf(String s)
的 String
是一个要解析的有效字符串。如果一个不可解析,我需要返回 0。
我是按以下方式做的:
try{
Integer.valueOf(String s)
} catch(NumberFormatException e) {
return 0;
}
这样做不好吗?
最佳答案
方法一:使用正则表达式判断数字的合法性
public static int parseStrToInt(String str) {
if (str.matches("\\d+")) {
return Integer.parseInt(str);
} else {
return 0;
}
}
方法二:使用Java内置的java.text.NumberFormat对象,看字符串解析后解析器位置是否在字符串末尾。如果是,我们可以假设整个字符串都是数字
public static int strToInt(String str) {
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
if (str.length() == pos.getIndex()) {
return Integer.parseInt(str);
} else {
return 0;
}
}
关于java - 要检查是否将可解析的字符串传递给 Integer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26098604/