Szukaj…


Składnia

  • $ „content {expression} content”
  • $ „content {expression: format} content”
  • $ „content {expression} {{content in braces}} content}”
  • $ „content {expression: format} {{content in braces}} content}”

Uwagi

Interpolacja ciągów jest skrótem dla metody string.Format() , która ułatwia budowanie ciągów zawierających w sobie wartości zmiennych i wyrażeń.

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

Wyrażenia

Pełnych wyrażeń można również używać w interpolowanych ciągach.

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

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

Wersja demonstracyjna na żywo .NET Fiddle

Formatuj daty w ciągach

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

Możesz również użyć metody DateTime.ToString , aby sformatować obiekt DateTime . Spowoduje to wygenerowanie takiego samego wyniku jak powyższy kod.

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

Wynik:

Jest 11 listopada 2015 r., Pomyśl życzenie!

Wersja demonstracyjna na żywo .NET Fiddle

Demo na żywo za pomocą DateTime.ToString

Uwaga: MM oznacza miesiące, a mm minuty. Zachowaj ostrożność, używając ich, ponieważ błędy mogą powodować błędy, które mogą być trudne do wykrycia.

Prosta obsługa

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

Za kulisami

Wewnętrznie to

$"Hello, {name}!" 

Zostanie skompilowany do czegoś takiego:

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

Wypełnienie wyjścia

Łańcuch można sformatować, aby zaakceptować parametr wypełniania, który określi, ile pozycji znaków użyje wstawiony ciąg:

${value, padding}

UWAGA: Dodatnie wartości wypełnienia oznaczają lewe wypełnienie, a ujemne wartości wypełnienia oznaczają prawe wypełnienie.

Lewa wyściółka

Lewe dopełnienie 5 (dodaje 3 spacje przed wartością liczby, więc w wyniku powstaje w sumie 5 pozycji znaków).

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

Wynik:

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

Wersja demonstracyjna na żywo .NET Fiddle

Prawa wyściółka

Prawe dopełnienie, które wykorzystuje ujemną wartość dopełniania, doda spacje na końcu bieżącej wartości.

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

Wynik:

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

Wersja demonstracyjna na żywo .NET Fiddle

Wypełnienie ze specyfikatorami formatu

Możesz także użyć istniejących specyfikatorów formatowania w połączeniu z dopełnianiem.

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

Wersja demonstracyjna na żywo .NET Fiddle

Formatowanie liczb w ciągach

Możesz użyć dwukropka i standardowej składni formatu liczbowego, aby kontrolować sposób formatowania liczb.

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"

Wersja demonstracyjna na żywo .NET Fiddle



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow