| Author |
How to keep leading zeros when doing a parseInt
|
Rita Chakras
Greenhorn
Joined: Aug 16, 2005
Posts: 10
|
|
Hi, I have a string which is a combination of a alpha prefix and a number suffix. I extract the prefix and get the number suffix of the string. Then, I do a Integer.parseInt on the suffix to get the value as an integer so that I can increment it. This works ok in general, but not when the suffix has leading zeros. In this case, I need to retain the leading zeros. So, for example, if the suffix is 001, when I parseInt it the integer value become 1 and then when I increment it, it becomes 2. I need it to be 001, 002. Is there a way to do this? Thanks in advance.
|
Rita C.
|
 |
Paul Clapham
Bartender
Joined: Oct 14, 2005
Posts: 16483
|
|
|
After you increment it, convert it back to a String with those leading zeroes.
|
 |
Rita Chakras
Greenhorn
Joined: Aug 16, 2005
Posts: 10
|
|
Problem is I'm not ever sure when the suffix has leading zeros. It depends on what value is being sent in. Also, the suffix may have 1 zeros to n number of zeros, but I don't know that. So I could have: 01, 02, 03 or I could have 08, 09, 10.
|
 |
Paul Clapham
Bartender
Joined: Oct 14, 2005
Posts: 16483
|
|
|
I think you mean you want the resulting String to be N characters, and you want to add leading zeroes until it reaches N characters, right? And you do know what N is, don't you?
|
 |
Rita Chakras
Greenhorn
Joined: Aug 16, 2005
Posts: 10
|
|
Yes, I do know what N is (length of String), but I don't know if the N contains leading zeros or not, and if it does how many leading zeros. So if I increment, I don't know how many zeros I should add or when I should stop adding zeros. I suppose I could parse through the string to figure out how many zeros it has and stop when it exceeds the length of N?
|
 |
fred rosenberger
lowercase baba
Bartender
Joined: Oct 02, 2003
Posts: 9956
|
|
if you know the length of the original string, the length of the prefix, and the length of the incremented-then-converted-to-a-string integer part, you know how many zeros to add: input string: prefix0000123 total length:13 prefix length: 6 length of string_after_increment (124): 3 13 - 6 - 3 = 4
|
Never ascribe to malice that which can be adequately explained by stupidity.
|
 |
Rob Spoor
Sheriff
Joined: Oct 27, 2005
Posts: 19216
|
|
|
If you use java.lang.DecimalFormat or String.format, you can specify the total number of digits. Whatever digits are not filled by the number itself are filled with zeros instead.
|
SCJP 1.4 - SCJP 6 - SCWCD 5
How To Ask Questions How To Answer Questions
|
 |
Norm Radder
Ranch Hand
Joined: Aug 10, 2005
Posts: 681
|
|
An easy way to pad with leading 0's Compute ix to get the number of leading 0's you want String padded = ("0000000000000"+old).substring(ix); // get rightmost chars
|
 |
Campbell Ritchie
Sheriff
Joined: Oct 13, 2005
Posts: 32712
|
|
Apart from the fact that String.format won't work on beginners': int i = . . .; String numberText = String.format("%010d", i);
|
 |
Rita Chakras
Greenhorn
Joined: Aug 16, 2005
Posts: 10
|
|
|
Thanks so much for all your help. Fred's solution works well.
|
 |
 |
|
|
subject: How to keep leading zeros when doing a parseInt
|
|
|