Reputation: 291
When I run parseInt:
Integer.parseInt(myString);
it throws:
NumberFormatException: For input string: ""
Does this mean I have do something like this?
if(StringUtils.isNotBlank(myString))
return Integer.parseInt(myString);
else
return 0;
Upvotes: 20
Views: 43511
Reputation: 160321
Yes, but: Wrap it in a thin method (and eliminate the redundant else
), or use an existing implementation, like Commons Lang's NumberUtils.toInt(str, defaultValue)
:
NumberUtils.toInt(myString, 0);
This method handles null
values and conversion failures.
Writing the same thing on your own is straight-forward:
NumberFormatExtension
exceptionUpvotes: 32
Reputation: 6081
If the string can be empty I do it this way:
Integer.parseInt("0" + inputString)
When I'm not sure it contains only digits:
Integer.parseInt(0 + inputString.replaceAll("\\D+",""))
Upvotes: 9
Reputation: 229
I don't know why was I searching for this but here's the easy way:
int test=str.isEmpty()?0:Integer.parseInt(str);
Upvotes: 0
Reputation: 3053
Integer.parseInt(String)
doesn't accept non-numeric input, including nulls and empty strings.
Either guard against that like you suggested, or catch the NFE.
Upvotes: 0
Reputation: 425448
What you have is fine, but as a coding style I prefer to make tests "positive" (isBlank
), rather than "negative" (isNotBlank
), ie
if (StringUtils.isBlank(myString)) {
return 0;
}
return Integer.parseInt(myString); // Note: No need for else when the if returns
or, more succinctly:
return StringUtils.isBlank(myString) ? 0 : Integer.parseInt(myString);
Upvotes: 4
Reputation: 1504072
Well, you could use the conditional operator instead:
return StringUtils.isNotBlank(myString) ? Integer.parseInt(myString) : 0;
If you need to do this in multiple places, you'd probably want to put this into a separate method. Note that you should also consider situations where myString
is null, or contains non-numeric text.
Upvotes: 23
Reputation: 28707
Yes. (Validate your inputs before making assumptions about what are in them. :-)
+1 for already finding Apache's common-lang w/ StringUtils
.
Upvotes: 0