557

In C# I have an integer value which need to be converted to a string, but it needs to add zeros before:

For Example:

int i = 1;
  

When I convert it to string it needs to become 0001

1

15 Answers 15

927

i.ToString().PadLeft(4, '0') - okay, but doesn't work for negative numbers
i.ToString("0000"); - explicit form
i.ToString("D4"); - short form format specifier
$"{i:0000}"; - string interpolation (C# 6.0+)

Sign up to request clarification or add additional context in comments.

1 Comment

304
i.ToString("D4");

See MSDN on format specifiers.

1 Comment

this way worked for me String.Format("{0:D4}", number);
127

Here's a good example:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well

1 Comment

Just a hint: You don't need to ToString() the string. PadLeft already returns a string.
73

C# 6.0 style string interpolation

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";

1 Comment

This one looks very nice. Good way to avoid $"some text {x.ToStrig("D4")} after text"
69

You can use:

int x = 1;
x.ToString("0000");

1 Comment

And a second way to use the same format string: string.Format("{0:0000}", x)
18
i.ToString("0000");

Comments

6

Easy peasy

int i = 1;
i.ToString("0###")

1 Comment

It'd be better if you add an explanation for '#'.
5

Simply

int i=123;
string paddedI = i.ToString("D4");

Comments

4

.NET has an easy function to do that in the String class. Just use:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  

1 Comment

int i = 1002; string str = i.ToString().PadLeft(4, '0'); // returns "1002" :)
1
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055

Comments

1
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);

Comments

1

Most of the given answers are slow or very slow or don't work for negative numbers.

Try this one:

}
    //
    //
    ///<summary>Format a value with a fixed number of digits.</summary>
    public static string Pad( this long v, int digits ) {
        int negative = 0;
        if ( v < 0 ) {
            negative = 1;
            v = Math.Abs( v );
        }
        var source = v.ToString();
        var length = source.Length;
        int max = length;
        if ( max < digits ) {
            max = digits;
        }
        max += negative;
        var ca = new char[ max ];
        for ( int i = 0; i < max; i++ ) {
            ca[ i ] = '0';
        }
        while ( length > 0 ) {
            ca[ --max ] = source[ --length ];
        }
        if ( 0 != negative ) ca[ 0 ] = '-';
        return new string( ca );
    }

Comments

-2

Here I want to pad my number with 4 digit. For instance, if it is 1 then it should show as 0001, if it 11 it should show as 0011.

Below is the code that accomplishes this:

reciptno=1; // Pass only integer.

string formatted = string.Format("{0:0000}", reciptno);

TxtRecNo.Text = formatted; // Output=0001

I implemented this code to generate money receipt number for a PDF file.

Comments

-2
string hello = "Hello C# Corner.";

string helloHash = hello.PadLeft(5, '#');  

Console.WriteLine(helloHash); 

Output :-

#####Hello C# Corner.

Comments

-5

To pad int i to match the string length of int x, when both can be negative:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')

1 Comment

Unnecessarily confusing especially when there is a very simple solution.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.