File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Java in General and the fly likes string format (with mask?) Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "string format (with mask?)" Watch "string format (with mask?)" New topic
Author

string format (with mask?)

Jan Groth
Ranch Hand

Joined: Feb 03, 2004
Posts: 456
hi there,

i have a string, for example "127.0.0.1", which i need in this form: "127.000.000.001" (filled up with zero).

right now i'm working with a loop and a set of conditions, but i'm sure there is a more elegant (=efficent) way. i played with MaskFormatter("###.###.###.###"), but I'm not sure if this solves my problems. Even if i need this conversion for a text field, I don't want to be too close to Swing, I'd like to solve this problem in a more general way...

many thanks for hints,
jan
Tim McGuire
Ranch Hand

Joined: Apr 30, 2003
Posts: 820

I would Split the string by "." and left-pad with the "0" character

see String.split()



Here is a nice padding routine
Jan Groth
Ranch Hand

Joined: Feb 03, 2004
Posts: 456
hi tim,

that's exactly what i'm doing and what i described with "the loop". takes almost 10 lines of code - and hey, there must be are better way to format a number, or not?

regards,
jan
Stan James
(instanceof Sidekick)
Ranch Hand

Joined: Jan 29, 2003
Posts: 8791
127.000.000.001 isn't a number in any system I know. That's about as good as you're going to do for formatting a rather complex string. As an exercise see if you can make your pad routine about half as long as the one linked above. That part is reusable as a bonus.


A good question is never answered. It is not a bolt to be tightened into place but a seed to be planted and to bear more seed toward the hope of greening the landscape of the idea. John Ciardi
Jim Yingst
Wanderer
Sheriff

Joined: Jan 30, 2000
Posts: 18671
If you're using JDK 5, then yes there is another (better?) way - using a java.util.Formatter. This is a little hard to figure out how to use at first, but it's well worth the effort, I think, as it's very powerful and flexible.

Note that you usually don't need to create a Formatter directly. There are a number of convenience methods built into preexisting classes:

java.lang.String.format()
java.io.PrintStream.format()
java.io.PrintStream.printf()
java.io.PrintWriter.format()
java.io.PrintWriter.printf()

For example to pad a number with zeros to 3 digits, you can use:

String output = String.format("%03d", Integer.parseInt(input));
[ September 09, 2005: Message edited by: Jim Yingst ]

"I'm not back." - Bill Harding, Twister
Michael Dunn
Ranch Hand

Joined: Jun 09, 2003
Posts: 4632
> takes almost 10 lines of code

if you want a 1-liner, this works for the example given, but I don't know
if it is 'bullet-proof' - I'd prefer split(), easier to read/modify

 
Don't get me started about those stupid light bulbs.
 
subject: string format (with mask?)
 
Similar Threads
Is there a limit to # of Statements over a Connection object
StringTokenizer ??
Problem displaying database table data in jsp form
Generics
StringTokenizer