Formatting output string with String.Format is really helpful, and it’s been mostly use when you develop application using C# or VB.Net. String.Format firstly released in .NET Framework 1.1. String.Format is for replaces each format item in a specified String with the text equivalent of a corresponding object’s value.
String.Format overload function:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 | public static string Format( string format, Object arg0 ) public static string Format( string format, params Object[] args ) public static string Format( IFormatProvider provider, string format, params Object[] args ) |
Basic use:
1 | String.Format(“Hello {0}”, “World”); //Produce: "Hello World" |
As you see the argument that inside the curly braces {0}, is the string format that will replace by the arg0. Which have this following format:
{index[,alignment][:formatString]}
where:
index: index of the arguments given
alignment: If alignment is positive, the text is right-aligned in a field the given number of spaces; if it’s negative, it’s left-aligned
formatString: string format specifiers.
Another example:
1 2 | DateTime dt = new DateTime(2010, 10, 15, 12, 47, 5, 0); String.Format( "{0:dd MM yyyy}" , dt); // "15 Oct 2010" |
Format specifiers:
1. Numbers

2. Date and Time

More Examples
Formatting Integer
Add zero before number:
1 2 | String.Format( "{0:000000}" , 200); // "000200" String.Format( "{0:000000}" , -200); // "-000200" |
Align number to the right or left:
1 2 | String.Format( "{0,6:0000}" , 22); // " 0022" String.Format( "{0,-6:0000}" , 22); // "0022 " |
Custom number formatting for phone number:
1 2 | String.Format( "{0:+### ### ### ###}" , 447900123456); // "+447 900 123 456" String.Format( "{0:##-####-####}" , 8958712551); // "89-5871-2551" |
Formatting Double
Digits after decimal point:
1 2 3 4 | String.Format( "{0:0.00}" , 123.4567); // "123.46" String.Format( "{0:0.00}" , 123.4); // "123.40" String.Format( "{0:0.##}" , 123.4567); // "123.46" String.Format( "{0:0.##}" , 123.4); // "123.4" |
Digits before decimal point:
1 2 3 | String.Format( "{0:00.0}" , 123.4567); // "123.5" String.Format( "{0:00.0}" , 23.4567); // "23.5" String.Format( "{0:00.0}" , -3.4567); // "-03.5" |
Thousands separator:
1 2 | String.Format( "{0:0,0.0}" , 12345.67); // "12,345.7" String.Format( "{0:0,0}" , 12345.67); // "12,346" |
Custom formatting for negative numbers and zero
1 2 3 | String.Format( "{0:0.00;minus 0.00;zero}" , 123.4567); // "123.46" String.Format( "{0:0.00;minus 0.00;zero}" , -123.4567); // "minus 123.46" String.Format( "{0:0.00;minus 0.00;zero}" , 0.0); // "zero" |
Formatting Datetime
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 | // create date time 2008-03-09 16:05:07.123 DateTime dt = new DateTime(2008, 3, 9, 16, 5, 7, 123); // date separator in german culture is "." (so "/" changes to ".") String.Format( "{0:d/M/yyyy HH:mm:ss}" , dt); // "9/3/2008 16:05:07" - english (en-US) String.Format( "{0:d/M/yyyy HH:mm:ss}" , dt); // "9.3.2008 16:05:07" - german (de-DE) String.Format( "{0:MM/dd/yyyy}" , dt); // "03/09/2008" String.Format( "{0:dddd, MMMM d, yyyy}" , dt); // "Sunday, March 9, 2008" String.Format( "{0:t}" , dt); // "4:05 PM" ShortTime String.Format( "{0:d}" , dt); // "3/9/2008" ShortDate String.Format( "{0:T}" , dt); // "4:05:07 PM" LongTime String.Format( "{0:D}" , dt); // "Sunday, March 09, 2008" LongDate String.Format( "{0:f}" , dt); // "Sunday, March 09, 2008 4:05 PM" LongDate+ShortTime String.Format( "{0:F}" , dt); // "Sunday, March 09, 2008 4:05:07 PM" FullDateTime String.Format( "{0:g}" , dt); // "3/9/2008 4:05 PM" ShortDate+ShortTime String.Format( "{0:G}" , dt); // "3/9/2008 4:05:07 PM" ShortDate+LongTime String.Format( "{0:m}" , dt); // "March 09" MonthDay String.Format( "{0:y}" , dt); // "March, 2008" YearMonth String.Format( "{0:r}" , dt); // "Sun, 09 Mar 2008 16:05:07 GMT" RFC1123 |
Formatting With IFormatProvider
1 2 3 4 5 6 7 | // format float to string float num = 1.5f; string str = num.ToString(CultureInfo.InvariantCulture.NumberFormat); // "1.5" string str = num.ToString(CultureInfo.GetCultureInfo( "de-DE" ).NumberFormat); // "1,5" // parse float from string float num = float .Parse( "1.5" , CultureInfo.InvariantCulture.NumberFormat); float num = float .Parse( "1,5" , CultureInfo.GetCultureInfo( "de-DE" ).NumberFormat); |
More details about String.Format on MSDN
Code source C# Examples
There is another meaning for comma placeholder character. When the comma character occur on the immediate left of the decimalpoint, they act as a scaling factor. Each comma causes the value to be divided by 1,000. for instance
123456789
#,###,.# format specifier returns 123456.8
.Net Training
http://wisentechnologies.com/it-courses/.net-training.aspx
good and useful post for every one. Thanks to share with us.