String Formatting FAQ

My String Formatting in C# article has been one of the most popular on this site for the last two years, and it’s received dozens of comments, many of which were formatting questions or answers to formatting questions. This article is a round-up of those comments - all credit to the original commenters, whose comments are on the original article.

Q:

How do I show numbers with 5 fixed digits with leading zeroes

A:
int _num1 = 123;
int _num2 = 45;
int _num3 = 123456;
String.Format("{0:00000}", _num1); //"00123"
       String.Format("{0:00000}",   _num2); //"00045"
       String.Format("{0:00000}", _num3); //"123456"
String.Format("{0:d5}", _num1); //"00123"
       String.Format("{0:d5}", _num2);   //"00045"
       String.Format("{0:d5}", _num3); //"123456"
 
Q:

Can I substitute a string for a value?

A:

Yes:

String.Format("{0:yes;;no}", value)

This will print "no" if value is 0, "yes" if value is 1.

 
Q:

What’s the most efficient way to convert a type into a string?

A:

Double testDouble = 19.95;

String testString1 = String.Format("{0:C}", testDouble); // Boxing operation required.

String testString2 = testDouble.ToString(”C”); // No boxing operation required.

 
Q:

How can I format as percentage without having the number multiplied by 100?

A:

Put a single quote (’) before the % in the format string.

myString.Format("{0:##.00′%", 1.23);

This will yield "1.23%".

 
Q:

Can I convert a number with a thousand separator to an int?

A:

Yes - no matter what thousand separator is in use for your locale.

int x = int.Parse("1,345"); // fails

int x = int.Parse("1,345",System.Globalization.NumberStyles.AllowThousands)

This gives you an x of 1345.

 
Q:

How can I use curly brackets within a formatted number?

A:

Yes - doubling them escapes them. For example:

string.format("{{SomeString}}={0}","Hello");
will produce: "{SomeString}=Hellow"

 
Q:

How can I convert from currency back to a number?

A:

You can add the bitmapped values of the Globalization.NumberStyles enumeration.

// format double to currency
str = string.Format("{0:c}", pmt);

// parse currency formatted string to   double
double.Parse(str,   Globalization.NumberStyles.AllowCurrencySymbol +
   Globalization.NumberStyles.AllowDecimalPoint +
   Globalization.NumberStyles.AllowThousands);
 
Q:

So what do google ads G Strings for men have to do with your site?

A:

Ask Google! :)

 
Q:

What’s a good way to format currency?

A:
double val = 4219.6;
str = string.Format("{0:$#,#.00;Call Us;Call Us}", val); 

This will return "$4,219.60". The .00 will force 2 decimals and the “;Call Us;Call Us” to show the text “Call Us” in place of negative and null values respectively. (Just in case)

 
Q:

How do I format an integer, with commas for thousands?

A:
string str = string.Format("{0:#,0}", intValue); 
 
Q:

How can I format a phone number to look like 800.555.1212?

A:

There’s no direct way to do this; however you can get dashes in the output. So you can do this:

string tempStr = String.Format(”{0:###-###-####}”, 8005551212);
string result =tempStr.Replace(’-',’.'); 

6 Responses to “String Formatting FAQ”

  1. John S. Says:

    Great post! Here’s a .NET Format String Cheat Sheet I made awhile back: http://john-sheehan.com/blog/index.php/net-cheat-sheets/

  2. links for 2007-10-02 « Flatlineato Says:

    [...] SteveX Compiled » Blog Archive » String Formatting FAQ String Formatting FAQ (tags: Programmazione .Net programming) Posted in Link. [...]

  3. Robot Minds of Robot Slaves » Formatting Numbers as Percents in C# Says:

    [...] And here is the link to the best info I could find on string formatting. [...]

  4. Braulio Says:

    Godd stuff !!

    It would be a good idea to extend this FAQ by adding more and more samples :-).

    My two cents, I need to format a float with the following format ddd,dd

    protected string DetailIncurredFormatHourEntryInHHHMM(float currValue)
    {
    return string.Format(”{0:###,#.00}”, (currValue));
    }

  5. Emil Says:

    How can I convert a percentage back to a number? I’ve tried the obvious bitmapped values from the Globalization.NumberStyles enumeration but no luck… I haven’t tried every one from the list but I thought it is a good question to add to this FAQ list!

  6. ASP.NET - C# - Emulating the VB Control Array - Part 1 » WhyPad Says:

    [...] to pop the month name in the newly created textboxes.  SteveX has a super helpful reference  and FAQ for string formatting.  Thanks, [...]

Leave a Reply