Sortie au format composite
string name = "Fred";
String.Format("Name = {0}, hours = {1:hh}", name, DateTime.Now);
Plusieurs éléments de format peuvent faire référence au même élément dans la liste d'objets en spécifiant le même spécificateur d'argument. Par exemple, en spécifiant une chaîne de format composé telle que "0x{0:X} {0:E} {0:N}", la même valeur peut être formatée en notation hexadécimale, scientifique et numérique, comme suit L'exemple montre :
string multiple = String.Format("0x{0:X} {0:E} {0:N}",
Int64.MaxValue);
Console.WriteLine(multiple);
// The example displays the following output:
// 0x7FFFFFFFFFFFFFFF 9.223372E+018 9,223,372,036,854,775,807.00
D ou d nombre décimal
Console.Write("{0:D5}", 25); //00025
E ou e scientifique
Console.Write("{0:E}", 250000); //2.500000E+005
F ou f flotteur
Console.Write("{0:F2}", 25); //25.00
Console.Write("{0:F0}", 25); //25
N ou n chiffres
Console.Write("{0:N}", 2500000); //2,500,000.00
X ou x hexadécimal
Console.Write("{0:X}", 250);
Peut être utilisé pour afficher l'heure, par exemple :
int hour = 7;
int minutes = 59;
int seconds = 3;
string timeString = string.Format("{0:00}:{1:00}:{2:00}", hour, minutes, seconds);
Debug.Log(timeString); // 输出:07:59:03
chaîne interpolée $
Le caractère spécial $ identifie un littéral de chaîne comme une chaîne interpolée. Les chaînes interpolées sont des littéraux de chaîne qui peuvent contenir des expressions interpolées. Lors de l'analyse d'une chaîne interpolée dans une chaîne de résultat, les éléments avec des expressions interpolées sont remplacés par la représentation sous forme de chaîne du résultat de l'expression.
string name = "Mark";
var date = DateTime.Now;
// 复合格式:
Console.WriteLine("Hello, {0}! Today is {1}, it's {2:HH:mm} now.", name, date.DayOfWeek, date);
// 字符串内插:
Console.WriteLine($"Hello, {
name}! Today is {
date.DayOfWeek}, it's {
date:HH:mm} now.");
// 两者输出完全相同,如下:
// Hello, Mark! Today is Wednesday, it's 19:40 now.
format facultatif
{
<interpolationExpression>[,<alignment>][:<formatString>]}
comme
Console.WriteLine($"|{
"Left",-7}|{
"Right",7}|");
const int FieldWidthRightAligned = 20;
Console.WriteLine($"{
Math.PI,FieldWidthRightAligned} - default formatting of the pi number");
Console.WriteLine($"{
Math.PI,FieldWidthRightAligned:F3} - display only three decimal digits of the pi number");
// Expected output is:
// |Left | Right|
// 3.14159265358979 - default formatting of the pi number
// 3.142 - display only three decimal digits of the pi number
Les chaînes brutes (trois guillemets) et les expressions (par exemple {Math.Sqrt(X * X + Y * Y)}) sont également prises en charge. Les
littéraux de chaîne peuvent contenir du texte arbitraire sans séquences d'échappement. Les littéraux de chaîne peuvent inclure des espaces et des retours à la ligne, des guillemets intégrés et d'autres caractères spéciaux.
int X = 2;
int Y = 3;
var pointMessage = $"""The point "{X}, {Y}" is {
Math.Sqrt(X * X + Y * Y)} from the origin""";
Console.WriteLine(pointMessage);
// output: The point "2, 3" is 3.605551275463989 from the origin.
Unité
Tous les endroits qui utilisent des paramètres de type chaîne peuvent être utilisés, comme dans debug.log :
string path = Application.persistentDataPath + "DataSave.json";
Debug.Log($"File not exist : {
path}");
référence
Composite :
https://learn.microsoft.com/en-us/dotnet/standard/base-types/composite-formatting
Interpolation :
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference /tokens/interpolated
raw string literals :
https://learn.microsoft.com/zh-cn/dotnet/csharp/language-reference/builtin-types/reference-types#string-literals