Поиск…


Синтаксис

  • $ "content {expression} content"
  • $ "content {expression: format} content"
  • $ "content {expression} {{content in braces}} content}"
  • $ "content {выражение: format} {{content in braces}} content}"

замечания

Строковая интерполяция является сокращением для string.Format() который упрощает string.Format() строк с переменными и значениями выражения внутри них.

var name = "World";
var oldWay = string.Format("Hello, {0}!", name);  // returns "Hello, World"
var newWay = $"Hello, {name}!";                   // returns "Hello, World"

Выражения

Полные выражения также могут использоваться в интерполированных строках.

var StrWithMathExpression = $"1 + 2 = {1 + 2}"; // -> "1 + 2 = 3"

string world = "world";
var StrWithFunctionCall = $"Hello, {world.ToUpper()}!"; // -> "Hello, WORLD!"

Живая демонстрация на .NET скрипке

Форматировать даты в строках

var date = new DateTime(2015, 11, 11);
var str = $"It's {date:MMMM d, yyyy}, make a wish!";
System.Console.WriteLine(str);

Вы также можете использовать метод DateTime.ToString для форматирования объекта DateTime . Это даст тот же результат, что и код выше.

var date = new DateTime(2015, 11, 11);
var str = date.ToString("MMMM d, yyyy");
str = "It's " + str + ", make a wish!";
Console.WriteLine(str);

Выход:

Это 11 ноября 2015 года, сделайте желание!

Живая демонстрация на .NET скрипке

Демо-версия с использованием DateTime.ToString

Примечание: MM обозначает месяцы и mm течение нескольких минут. Будьте очень осторожны, когда используете их, поскольку ошибки могут вводить ошибки, которые могут быть трудно обнаружить.

Простое использование

var name = "World";
var str = $"Hello, {name}!";
//str now contains: "Hello, World!";

За кулисами

Внутри этого

$"Hello, {name}!" 

Будет скомпилирован примерно так:

string.Format("Hello, {0}!", name);

Заполнение вывода

Строка может быть отформатирована, чтобы принять параметр дополнения, который будет определять, сколько позиций символов будет использовать вставленная строка:

${value, padding}

ПРИМЕЧАНИЕ. Положительные значения заполнения означают, что левое заполнение и отрицательные значения прокладки указывают на правильное заполнение.

Левая прокладка

Левое заполнение 5 (добавляет 3 пробела перед значением числа, поэтому в итоговой строке оно занимает 5 символов).

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);

Выход:

The answer to life, the universe and everything is    42.

Живая демонстрация на .NET скрипке

Правое заполнение

Правое заполнение, которое использует отрицательное значение заполнения, добавит пробелы в конец текущего значения.

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);

Выход:

The answer to life, the universe and everything is 42   .

Живая демонстрация на .NET скрипке

Заполнение с помощью спецификаторов формата

Вы также можете использовать существующие спецификаторы форматирования в сочетании с дополнением.

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 ";
//                                                           ^^^^^

Живая демонстрация на .NET скрипке

Форматирование чисел в строках

Вы можете использовать двоеточие и синтаксис стандартного числового формата для управления форматированием чисел.

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"

Живая демонстрация на .NET скрипке



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow