Andrew
Andrew

Reputation: 2539

C# string formatting with variable space alignment

I want to do something like

String.Format("Completed {0:9} of ",0) + xlsx.totalCount.ToString();

except instead of hardcoding a 9 I want the alignment to be whatever xlsx.totalCount is. Any thoughts?

Upvotes: 5

Views: 3662

Answers (3)

Herb
Herb

Reputation: 743

I'd assumed that he wanted a count of 9s depending on the value of xlsx.totalCount.

   StringBuilder sb = new StringBuilder();
   sb.Append( '9', xlsx.totalCount );
   String.Format( "Completed {0:" + sb.ToString() + "} of ",0) + xlsx.totalCount.ToString();

Again, there feels like there should be an easier way of building a chain of 9s, but not in 3 minutes of thinking, apparently.

Upvotes: 0

Neowizard
Neowizard

Reputation: 3017

The string doesn't have to be a compile time constant, you can build the string during runtime (using a StringBuilder, operator+ or even a nested String.Format). This, for instance will produce the needed string with xlsx.totalCount replacing the "9":

String.Format("Completed {0:" + xlsx.totalCount + "} of "...

Upvotes: 3

bradenb
bradenb

Reputation: 793

Try it like this:

string formatString = "{0:" + xlsx.totalCount.ToString() + "}";
String.Format("Completed " + formatString + " of ", 0) + xlsx.totalCount.ToString();

Upvotes: 4

Related Questions