When I need to print "00000", I can use "0"*5 in python. Is there equivalent in C# without looping?
7 Answers
One of the String ctor overloads will do this for you:
string zeros = new String('0', 5);

- 53,046
- 9
- 139
- 151
-
Is there a difference between `string` and `String`? – Mob Nov 20 '11 at 13:55
-
1[Nope](http://stackoverflow.com/questions/7074/in-c-sharp-what-is-the-difference-between-string-and-string) – Jay Riggs Nov 20 '11 at 14:00
Based on your example I figure you're going to be using these strings to help zero-pad some numbers. If that's the case, it would be easier to use the String.PadLeft()
method to do your padding. You could be using the similar function in python as well, rjust()
.
e.g.,
var str = "5";
var padded = str.PadLeft(8, '0'); // pad the string to 8 characters, filling in '0's
// padded = "00000005"
Otherwise if you need a repeated sequence of strings, you'd want to use the String.Concat()
method in conjunction with the Enumerable.Repeat()
method. Using the string constructor only allows repetition of a single character.
e.g.,
var chr = '0';
var repeatedChr = new String(chr, 8);
// repeatedChr = "00000000";
var str = "ha";
// var repeatedStr = new String(str, 5); // error, no equivalent
var repeated = String.Concat(Enumerable.Repeat(str, 5));
// repeated = "hahahahaha"

- 129,526
- 32
- 251
- 272
To add to the other answers, you won't be able to use this string constructor with another string to repeat strings, such as string s = new string("O", 5);
. This only works with chars.
However, you can use Enumerable.Repeat()
after adding using System.Linq;
to achieve the desired result with strings.
string s = string.Concat(Enumerable.Repeat("O", 5));

- 999
- 7
- 13
-
There is no such constructor that repeats strings, only for characters. – Jeff Mercado Sep 17 '11 at 06:00
-
-
Ah oops, didn't notice you said that. It's better to leave out code that does not work so you don't confuse people like me to think you're suggesting it works or at the very least, format it so it doesn't appear as normal code. :) – Jeff Mercado Sep 17 '11 at 06:30
Depending on your application, this may be useful too:
int n = 0;
string s = n.ToString().PadRight(5, '0');

- 143
- 1
- 12
Don't ever, ever use this: string.Join("0", new string[6]);
Why not just "00000" ?! ducks

- 10,153
- 7
- 46
- 66
-
Anti-answers can be good if you can provide a better solution. That's definitely something you don't want to do but writing out the string literal might not always be feasible. – Jeff Mercado Sep 17 '11 at 05:56