Place Formatted Information in a String
1. Problem
You want to place formatted information (such as right-aligned text or numbers rounded to a specific number of decimal places) in a string.
2. Solution
Use PowerShell’s formatting operator to place formatted information inside a string.
PS >$formatString = "{0,8:D4} {1:C}'n"
PS >$report = "Quantity Price'n"
PS >$report += "---------------'n"
PS >$report += $formatString -f 50,2.5677
PS >$report += $formatString -f 3,9
PS >$report
Quantity Price
---------------
0050 $2.57
0003 $9.00
3. Discussion
PowerShell’s string formatting operator (-f) uses the same string formatting rules as the String.Format() method in the .NET Framework. It takes a format string on its left side, and the items you want to format on its right side.
In the solution, you format two numbers: a quantity and a price. The first number ({0}) represents the quantity and is right-aligned in a box of 8 characters (,8). It is formatted as a decimal number with 4 digits (:D4). The second number ({1}) represents the price, which you format as currency (:C).
For a detailed explanation of PowerShell’s formatting operator, see “Simple Operators” in Appendix A, PowerShell Language and Environment. For a detailed list of the formatting rules, see Appendix H, .NET String Formatting.
Although primarily used to control the layout of information, the string-formatting operator is also a readable replacement for what is normally accomplished with string concatenation:
PS >$number1 = 10
PS >$number2 = 32
PS >"$number2 divided by $number1 is " + $number2 / $number1
32 divided by 10 is 3.2
The string formatting operator makes this much easier to read:
Code View: Scroll / Show All
PS >"{0} divided by {1} is {2}" -f $number2, $number1, ($number2 / $number1)
32 divided by 10 is 3.2
Tags: divided, formatted, framework, information string, net, place, string 
