当我运行parseInt时:
Integer.parseInt(myString);
它扔了:
NumberFormatException: For input string: ""
这是否意味着我做了类似的事情?
if(StringUtils.isNotBlank(myString))
return Integer.parseInt(myString);
else
return 0;
答案 0 :(得分:25)
是的,但是:用精简方法包装(并消除多余的else
),或者使用现有的实现,例如Commons Lang's NumberUtils.toInt(str, defaultValue)
:
NumberUtils.toInt(myString, 0);
此方法处理null
值和转换失败。
答案 1 :(得分:10)
好吧,你可以改用条件运算符:
return StringUtils.isNotBlank(myString) ? Integer.parseInt(myString) : 0;
如果您需要在多个地方执行此操作,您可能希望将其放入单独的方法中。请注意,您还应该考虑myString
为空或包含非数字文本的情况。
答案 2 :(得分:3)
如果字符串可以为空,我就是这样做的:
Integer.parseInt("0" + inputString)
当我不确定它只包含数字时:
Integer.parseInt(0 + inputString.replaceAll("\\D+",""))
答案 3 :(得分:1)
你所拥有的是好的,但作为一种编码风格,我更喜欢使测试“积极”(isBlank
),而不是“消极”(isNotBlank
),即
if (StringUtils.isBlank(myString)) {
return 0;
}
return Integer.parseInt(myString); // Note: No need for else when the if returns
或者,更简洁:
return StringUtils.isBlank(myString) ? 0 : Integer.parseInt(myString);
答案 4 :(得分:0)
是。 (在对其中的内容做出假设之前验证您的输入。: - )
+1已经找到了Apache的普通语w / StringUtils
。
答案 5 :(得分:0)
Integer.parseInt(String)
不接受非数字输入,包括空值和空字符串。
要么像你建议的那样防范,要么抓住NFE。
答案 6 :(得分:0)
我不知道为什么要搜索这个,但这里有简单的方法:
int test=str.isEmpty()?0:Integer.parseInt(str);