# String Interpolation
# Format dates in strings
var date = new DateTime(2015, 11, 11);
var str = $"It's {date:MMMM d, yyyy}, make a wish!";
System.Console.WriteLine(str);
You can also use the DateTime.ToString
(opens new window) method to format the DateTime
object. This will produce the same output as the code above.
var date = new DateTime(2015, 11, 11);
var str = date.ToString("MMMM d, yyyy");
str = "It's " + str + ", make a wish!";
Console.WriteLine(str);
Output:
It's November 11, 2015, make a wish!
Live Demo on .NET Fiddle (opens new window)
Live Demo using DateTime.ToString (opens new window)
Note: MM
stands for months and mm
for minutes. Be very careful when using these as mistakes can introduce bugs that may be difficult to discover.
# Padding the output
String can be formatted to accept a padding parameter that will specify how many character positions the inserted string will use :
${value, padding}
**NOTE:** Positive padding values indicate left padding and negative padding values indicate right padding.
# Left Padding
A left padding of 5 (adds 3 spaces before the value of number, so it takes up a total of 5 character positions in the resulting string.)
var number = 42;
var str = $"The answer to life, the universe and everything is {number, 5}.";
//str is "The answer to life, the universe and everything is 42.";
// ^^^^^
System.Console.WriteLine(str);
Output:
The answer to life, the universe and everything is 42.
Live Demo on .NET Fiddle (opens new window)
# Right Padding
Right padding, which uses a negative padding value, will add spaces to the end of the current value.
var number = 42;
var str = $"The answer to life, the universe and everything is ${number, -5}.";
//str is "The answer to life, the universe and everything is 42 .";
// ^^^^^
System.Console.WriteLine(str);
Output:
The answer to life, the universe and everything is 42 .
Live Demo on .NET Fiddle (opens new window)
# Padding with Format Specifiers
You can also use existing formatting specifiers in conjunction with padding.
var number = 42;
var str = $"The answer to life, the universe and everything is ${number, 5:f1}";
//str is "The answer to life, the universe and everything is 42.1 ";
// ^^^^^
Live Demo on .NET Fiddle (opens new window)
# Expressions
Full expressions can also be used in interpolated strings.
var StrWithMathExpression = $"1 + 2 = {1 + 2}"; // -> "1 + 2 = 3"
string world = "world";
var StrWithFunctionCall = $"Hello, {world.ToUpper()}!"; // -> "Hello, WORLD!"
Live Demo on .NET Fiddle (opens new window)
# Simple Usage
var name = "World";
var str = $"Hello, {name}!";
//str now contains: "Hello, World!";
# Behind the scenes
Internally this
$"Hello, {name}!"
Will be compiled to something like this:
string.Format("Hello, {0}!", name);
# Formatting numbers in strings
You can use a colon and the standard numeric format syntax (opens new window) to control how numbers are formatted.
var decimalValue = 120.5;
var asCurrency = $"It costs {decimalValue:C}";
// String value is "It costs $120.50" (depending on your local currency settings)
var withThreeDecimalPlaces = $"Exactly {decimalValue:F3}";
// String value is "Exactly 120.500"
var integerValue = 57;
var prefixedIfNecessary = $"{integerValue:D5}";
// String value is "00057"
Live Demo on .NET Fiddle (opens new window)
# Syntax
- $"content {expression} content"
- $"content {expression:format} content"
- $"content {expression} { {content in braces} } content}"
- $"content {expression:format} { { content in braces } } content}"
# Remarks
String interpolation is a shorthand for the string.Format()
method that makes it easier to build strings with variable and expression values inside of them.
var name = "World";
var oldWay = string.Format("Hello, {0}!", name); // returns "Hello, World"
var newWay = $"Hello, {name}!"; // returns "Hello, World"