MySQL Java JavaScript PHP Python HTML-CSS C-sharp

Formatarea și interpolarea șirurilor de caractere

Formatarea șirurilor

La afișarea șirurilor în consolă folosind metoda Console.WriteLine, pentru a încorpora valori într-un șir, putem folosi formatarea în locul concatenării:

string name = "Tom";
int age = 23;

Console.WriteLine("Nume: {0} Vârstă: {1}", name, age);
// afișare în consolă
// Nume: Tom Vârstă: 23

În șirul "Nume: {0} Vârstă: {1}", în locul {0} și {1} vor fi inserate valorile variabilelor name și age în ordinea lor.

Aceeași formatare a șirurilor o putem face nu doar în metoda Console.WriteLine, ci și oriunde în program cu ajutorul metodei string.Format:

string name = "Tom";
int age = 23;
string output = string.Format("Nume: {0} Vârstă: {1}", name, age);
Console.WriteLine(output);

Metoda Format primește un șir cu placeholder-e de tip {0}, {1} etc., și un set de argumente care vor fi inserate în locul acestor placeholder-e. În final, se generează un nou șir.

Specificații de formatare

În metoda Format pot fi utilizate diverse specificatori și descriptori, care permit ajustarea modului de afișare a datelor. Să analizăm principalele descriptori. Toate formatele utilizate:

  • C / c: Specifică formatul unității monetare, indică numărul de zecimale după virgulă
  • D / d: Format întreg, indică numărul minim de cifre
  • E / e: Reprezentarea exponențială a unui număr, indică numărul de zecimale după virgulă
  • F / f: Formatul numerelor fracționare cu punct fix, indică numărul de zecimale după virgulă
  • G / g: Specifică cel mai scurt dintre cele două formate: F sau E
  • N / n: De asemenea, specifică formatul numerelor fracționare cu punct fix, determină numărul de zecimale după virgulă
  • P / p: Specifică afișarea semnului procentual lângă număr, indică numărul de zecimale după virgulă
  • X / x: Formatul hexazecimal al unui număr

Formatarea valutei

Pentru formatarea valutei se utilizează descriptorul "C":

double number = 23.7;
string result = string.Format("{0:C0}", number);
Console.WriteLine(result); // 24 р.
string result2 = string.Format("{0:C2}", number);
Console.WriteLine(result2); // 23,70 р.

Numărul după descriptor indică câte cifre vor fi folosite după separatorul între partea întreagă și cea fracționară. La afișare se adaugă și simbolul monetar pentru cultura curentă a calculatorului. În funcție de localizarea sistemului de operare rezultatul poate varia. Observați și rotunjirea în primul exemplu.

Formatarea numerelor întregi

Pentru formatarea valorilor întregi se folosește descriptorul "d":

int number = 23;
string result = string.Format("{0:d}", number);
Console.WriteLine(result); // 23
string result2 = string.Format("{0:d4}", number);
Console.WriteLine(result2); // 0023

Numărul după descriptor indică câte cifre vor fi în valoarea numerică. Dacă în numărul inițial sunt mai puține cifre, se adaugă zerouri.

Formatarea numerelor fracționare

Pentru formatarea numerelor fracționare se folosește descriptorul F, numărul după acesta indicând câte cifre vor fi folosite după separatorul între partea întreagă și cea fracționară. Dacă numărul inițial este întreg, se adaugă separatorul și zerourile.

int number = 23;
string result = string.Format("{0:f}", number);
Console.WriteLine(result); // 23,00

double number2 = 45.08;
string result2 = string.Format("{0:f4}", number2);
Console.WriteLine(result2); // 45,0800

double number3 = 25.07;
string result3 = string.Format("{0:f1}", number3);
Console.WriteLine(result3); // 25,1

Formatarea procentelor

Descriptorul P specifică afișarea procentelor. Specificatorul numeric folosit cu acesta indică câte cifre vor fi după virgulă:

decimal number = 0.15345m;
Console.WriteLine("{0:P1}", number); // 15,3%

Formate personalizate

Folosind semnul #, putem ajusta formatul de afișare. De exemplu, să afișăm un număr în formatul unui telefon +x (xxx)xxx-xx-xx:

long number = 19876543210;
string result = string.Format("{0:+# (###) ###-##-##}", number);
Console.WriteLine(result); // +1 (987) 654-32-10

Metoda ToString

Metoda ToString() nu doar obține descrierea șirului obiectului, ci poate realiza și formatarea. Suportă aceleași descriptori care sunt utilizați în metoda Format:

long number = 19876543210;
Console.WriteLine(number.ToString("+# (###) ###-##-##")); // +1 (987) 654-32-10

double money = 24.8;
Console.WriteLine(money.ToString("C2")); // 24,80 р.

Interpolarea șirurilor

Interpolarea șirurilor este destinată să simplifice formatarea șirurilor. Să rescriem exemplul de afișare a valorilor variabilelor într-un șir:

string name = "Tom";
int age = 23;

Console.WriteLine($"Nume: {name} Vârstă: {age}");
// afișare în consolă
// Nume: Tom Vârstă: 23

Semnul dolar înaintea șirului indică faptul că va avea loc interpolarea șirurilor. În interiorul șirului se folosesc din nou placeholder-e {...}, dar în interiorul acoladelor putem scrie direct expresiile pe care dorim să le afișăm.

Interpolarea este practic o formatare mai concisă. În interiorul acoladelor putem specifica nu doar proprietăți, ci și diverse expresii C#:

int x = 8;
int y = 7;
string result = $"{x} + {y} = {x + y}";
Console.WriteLine(result); // 8 + 7 = 15

De asemenea, în interiorul acoladelor putem executa expresii mai complexe, de exemplu, să apelăm metode:

int x = 8;
int y = 7;
string result = $"{x} * {y} = {Multiply(x, y)}";
Console.WriteLine(result); // 8 * 7 = 56

int Multiply(int a, int b) => a * b;

În interiorul șirului putem aplica formatarea. În acest caz putem folosi aceiași descriptori ca și în metoda Format. De exemplu, să afișăm un număr de telefon în formatul +x xxx-xxx-xx-xx:

long number = 19876543210;
Console.WriteLine($"{number:+# ## ##}"); // +1 987 654 32 10

Adăugăm spații înainte și după afișarea formatată:

string name = "Tom";
int age = 23;

Console.WriteLine($"Nume: {name, -5} Vârstă: {age}"); // spații după
Console.WriteLine($"Nume: {name, 5} Vârstă: {age}"); // spații înainte

Afișare:

Nume: Tom      Vârstă: 23
Nume:      Tom Vârstă: 23
← Lecția anterioară Lecția următoare →