Formatowanie stringów – liczby, waluty, daty
Nauczysz się formatować dane w C# – wyświetlać kwoty z walutą, zaokrąglać liczby i prezentować daty w czytelny sposób.
Podstawy formatowania
W C# mamy dwa główne sposoby formatowania tekstu: interpolację stringów (nowsza metoda) i metodę string.Format().
Interpolacja stringów (zalecana)
Najprostsza metoda – zaczynamy string od znaku $ i wstawiamy zmienne w klamrach {}.
string imie = "Anna"; int wiek = 17; double srednia = 4.75; // Interpolacja – znak $ przed cudzysłowem Console.WriteLine($"Uczeń: {imie}, wiek: {wiek}, średnia: {srednia}"); // Wynik: Uczeń: Anna, wiek: 17, średnia: 4,75
Interpolacja $"..." to najczęściej używana metoda w nowoczesnym C#. Jest czytelna i łatwa do zrozumienia.
Metoda string.Format()
Starsza metoda – używamy placeholderów {0}, {1}, {2} itd.
string imie = "Anna"; int wiek = 17; // string.Format – numerowane placeholdery string tekst = string.Format("Uczeń: {0}, wiek: {1}", imie, wiek); // {0} = pierwszy argument (imie) // {1} = drugi argument (wiek)
❌ Łączenie plusami
"Wiek: " + wiek + " lat"
Mało czytelne przy wielu zmiennych
✅ Interpolacja
$"Wiek: {wiek} lat"
Czytelne i wygodne
Formatowanie liczb
Po zmiennej w klamrach możemy dodać dwukropek i specyfikator formatu, np. {zmienna:F2}.
Zaokrąglanie miejsc po przecinku
Specyfikator F (Fixed-point) określa liczbę miejsc po przecinku:
double pi = 3.14159265; double cena = 19.5; Console.WriteLine($"Pi = {pi:F2}"); // Pi = 3,14 Console.WriteLine($"Pi = {pi:F4}"); // Pi = 3,1416 Console.WriteLine($"Cena = {cena:F2}"); // Cena = 19,50
F2 = Fixed-point z 2 miejscami po przecinku
F0 = zaokrąglenie do liczby całkowitej
F4 = 4 miejsca po przecinku
Separator tysięcy
Specyfikator N (Number) dodaje separatory tysięcy:
int populacja = 38179800; double budzet = 1234567.89; Console.WriteLine($"Ludność: {populacja:N0}"); // 38 179 800 Console.WriteLine($"Budżet: {budzet:N2}"); // 1 234 567,89
| Specyfikator | Nazwa | Przykład | Wynik |
|---|---|---|---|
F2 | Fixed-point | {3.1:F2} | 3,10 |
N0 | Number | {1234:N0} | 1 234 |
N2 | Number | {1234.5:N2} | 1 234,50 |
E2 | Naukowy | {1234:E2} | 1,23E+003 |
Waluty i procenty
C# automatycznie dodaje symbol waluty i formatuje procenty na podstawie ustawień systemu.
Formatowanie walutowe – C
Specyfikator C (Currency) dodaje symbol waluty:
decimal cena = 99.90m; decimal pensja = 4500.00m; Console.WriteLine($"Cena: {cena:C}"); // Cena: 99,90 zł Console.WriteLine($"Pensja: {pensja:C}"); // Pensja: 4 500,00 zł // Bez groszy: Console.WriteLine($"Cena: {cena:C0}"); // Cena: 100 zł
Symbol waluty (zł, €, $) zależy od ustawień regionalnych systemu Windows. Na polskim systemie będzie „zł”.
Formatowanie procentów – P
Specyfikator P (Percent) mnoży przez 100 i dodaje znak %:
double rabat = 0.15; // 15% jako ułamek double postep = 0.756; // 75.6% Console.WriteLine($"Rabat: {rabat:P0}"); // Rabat: 15% Console.WriteLine($"Postęp: {postep:P1}"); // Postęp: 75,6%
Pamiętaj: P mnoży wartość przez 100! Więc 0.15 staje się 15%, a 0.756 staje się 75,6%.
| Specyfikator | Nazwa | Przykład | Wynik (PL) |
|---|---|---|---|
C | Waluta | {99.9:C} | 99,90 zł |
C0 | Waluta (bez gr) | {99.9:C0} | 100 zł |
P0 | Procent | {0.15:P0} | 15% |
P2 | Procent | {0.1567:P2} | 15,67% |
Formatowanie dat
Typ DateTime ma wiele formatów – od krótkich dat po pełne daty z godziną.
Standardowe formaty dat
DateTime teraz = DateTime.Now; DateTime urodziny = new DateTime(2007, 5, 15); // Standardowe formaty: Console.WriteLine($"Krótka data: {teraz:d}"); // 15.05.2025 Console.WriteLine($"Długa data: {teraz:D}"); // czwartek, 15 maja 2025 Console.WriteLine($"Krótki czas: {teraz:t}"); // 14:30 Console.WriteLine($"Długi czas: {teraz:T}"); // 14:30:45 Console.WriteLine($"Pełna: {teraz:f}"); // czwartek, 15 maja 2025 14:30
Własne formaty dat
Możesz tworzyć własne wzorce używając symboli:
DateTime data = new DateTime(2025, 5, 15, 14, 30, 0); // Własne wzorce: Console.WriteLine($"{data:dd.MM.yyyy}"); // 15.05.2025 Console.WriteLine($"{data:yyyy-MM-dd}"); // 2025-05-15 Console.WriteLine($"{data:dd/MM/yyyy HH:mm}"); // 15/05/2025 14:30 Console.WriteLine($"{data:dddd, d MMMM}"); // czwartek, 15 maja
| Symbol | Znaczenie | Przykład |
|---|---|---|
dd | Dzień (2 cyfry) | 05, 15, 31 |
MM | Miesiąc (2 cyfry) | 01, 05, 12 |
MMM | Miesiąc (skrót) | sty, maj, gru |
MMMM | Miesiąc (pełna nazwa) | styczeń, maj |
yyyy | Rok (4 cyfry) | 2025 |
HH | Godzina 24h | 00-23 |
mm | Minuty | 00-59 |
ss | Sekundy | 00-59 |
dddd | Dzień tygodnia | poniedziałek |
MM = miesiąc (duże M)
mm = minuty (małe m)
HH = godziny 24h, hh = godziny 12h
Zadanie dla uczniów
Paragon sklepowy
Napisz program konsolowy, który wyświetla paragon zakupów:
- Pobierz od użytkownika nazwę produktu i cenę (decimal)
- Pobierz ilość sztuk (int)
- Oblicz sumę i wyświetl ją w formacie walutowym (
:C) - Oblicz rabat 10% i wyświetl go z symbolem % (
:P0) - Na końcu paragonu wyświetl aktualną datę i godzinę w formacie:
dd.MM.yyyy HH:mm
Przykładowy wynik:
===== PARAGON ===== Produkt: Kawa mielona Cena jednostkowa: 24,99 zł Ilość: 3 szt. ------------------- Suma: 74,97 zł Rabat: 10% Do zapłaty: 67,47 zł ------------------- Data: 15.05.2025 14:30
⭐ Bonus 1: Dodaj VAT 23% i wyświetl kwotę netto i brutto osobno
⭐⭐ Bonus 2: Pozwól użytkownikowi dodać wiele produktów (pętla) i wyświetl podsumowanie wszystkich