C# Language
Интерполяция строк
Поиск…
Синтаксис
- $ "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 скрипке