Can I use an IFormatProvider to do this?

  • Thread starter Thread starter 0to60
  • Start date Start date
0

0to60

I have to write to a fixed field file, and I have to format my numbers in a
particular way. I have to front pad them with 0's, and I have to write the
decimal value 3.14 as "314". So for example, if its a 8 character field I'd
have to write:

"00000314"

I looked at MS' formatting documentation (IFormatProvider, IFormatable) but
the docs were complicated and I suspect there's a better explanation for me.
Can someone tell me what's the easiest way to go about this? I'll need to
be able to specify the fixed field width and the number of decimal places.
 
0to60 said:
I have to write to a fixed field file, and I have to format my numbers in a
particular way. I have to front pad them with 0's, and I have to write the
decimal value 3.14 as "314". So for example, if its a 8 character field
I'd have to write:

"00000314"

I looked at MS' formatting documentation (IFormatProvider, IFormatable)
but the docs were complicated and I suspect there's a better explanation
for me. Can someone tell me what's the easiest way to go about this? I'll
need to be able to specify the fixed field width and the number of decimal
places.

One easy way to do it is String.Format:

decimal n = 3.14m;
string formatted = string.Format("{0:0000000#}", n*100);

By editing the format string and adding additional parameters, you can
format all the values that go into one record for your file in one go.
 
Alberto said:
One easy way to do it is String.Format:

decimal n = 3.14m;
string formatted = string.Format("{0:0000000#}", n*100);

By editing the format string and adding additional parameters, you can
format all the values that go into one record for your file in one go.

Perfect!

Now, is there a way to front pad a string with spaces? I need fixed width
strings, and they have to be front padded with spaces.
 
0to60 said:
Perfect!

Now, is there a way to front pad a string with spaces? I need fixed width
strings, and they have to be front padded with spaces.

Nevermind, I got it.
 
For the people that still want the answer to this.

string newString = oldString.PadLeft(100,' ');

will pad the left hand side up to 100 characters and PadRight will do it to
the right hand side.
 
Back
Top