Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
CSharpNotesForProfessionals.pdf
Скачиваний:
57
Добавлен:
20.05.2023
Размер:
6.12 Mб
Скачать

Chapter 15: String Interpolation

Section 15.1: 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 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

Live Demo using DateTime.ToString

Note: MM stands for months and mm for minutes. Be very careful when using these as mistakes can introduce bugs that may be di cult to discover.

Section 15.2: 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:

GoalKicker.com – C# Notes for Professionals

73

The answer to life, the universe and everything is

42.

 

 

Live Demo on .NET Fiddle

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

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

Section 15.3: 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

Section 15.4: Formatting numbers in strings

You can use a colon and the standard numeric format syntax 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;

GoalKicker.com – C# Notes for Professionals

74

var prefixedIfNecessary = $"{integerValue:D5}";

// String value is "00057"

Live Demo on .NET Fiddle

Section 15.5: 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);

GoalKicker.com – C# Notes for Professionals

75