Stringi – Interpolacja, string.Format i Formatowanie Tekstu

C# Stringi – Interpolacja, string.Format i Formatowanie Tekstu

C# Stringi – Interpolacja, string.Format i Formatowanie Tekstu

Łączenie tekstu w C# wydaje się banalne… dopóki kod nie zaczyna przypominać spaghetti złożonego z +, cudzysłowów i przypadkowych ToString().
W prawdziwych projektach backendowych formatowanie stringów pojawia się wszędzie: w logach, API, komunikatach błędów, e-mailach czy raportach.

W tym artykule pokażę Ci:

  • kiedy używać interpolacji stringów,
  • czym różni się string.Format od $"",
  • jak działają escape characters,
  • czym są verbatim strings (@),
  • oraz jakie błędy najczęściej trafiają później na produkcję.

Jeśli uczysz się C# lub chcesz pisać bardziej profesjonalny kod w .NET — ten poradnik jest dla Ciebie.


Dlaczego formatowanie tekstu w C# jest ważne?

W większości aplikacji biznesowych generujesz tekst praktycznie cały czas:

  • logi aplikacyjne,
  • odpowiedzi API,
  • komunikaty błędów,
  • e-maile,
  • eksporty danych,
  • raporty PDF,
  • ścieżki do plików,
  • SQL-e i regexy.

Źle napisane stringi szybko prowadzą do:

  • nieczytelnego kodu,
  • błędów trudnych do debugowania,
  • problemów z utrzymaniem projektu,
  • ukrytych bugów produkcyjnych.

Dobrze napisany kod powinien czytać się niemal jak zwykłe zdanie.


Konkatenacja stringów w C#

Najprostszy sposób: operator +

Pierwszą metodą łączenia tekstu jest zwykła konkatenacja.

string name = "Anna";
string message = "Cześć, " + name + "!";

Console.WriteLine(message);

// Wynik: Cześć, Anna!

To działa dobrze… dopóki string jest prosty.


Problem z większą liczbą zmiennych

Spójrz na taki kod:

string firstName = "Anna";
int age = 30;
decimal balance = 1240.50m;

string result =
    "Użytkownik " + firstName +
    " ma " + age +
    " lat i saldo " + balance + " zł.";

Kod:

  • traci czytelność,
  • jest trudniejszy w utrzymaniu,
  • łatwo o literówkę,
  • ciężko znaleźć błędy.

To właśnie moment, w którym warto przejść na interpolację stringów.


String.Concat – starszy odpowiednik konkatenacji

C# posiada również metodę String.Concat.

string result = String.Concat("Cześć, ", "Anna", "!");

Działa praktycznie tak samo jak operator +.

Kiedy możesz spotkać String.Concat?

Najczęściej:

  • w starszych projektach,
  • w kodzie generowanym automatycznie,
  • w legacy code.

W nowoczesnym C# zwykle używa się interpolacji.


string.Format w C#

Jak działa string.Format?

string.Format działa jak szablon.

string name = "Anna";
int age = 30;

string result = string.Format(
    "Użytkownik {0} ma {1} lat.",
    name,
    age);

// Wynik: Użytkownik Anna ma 30 lat.

Formatowanie liczb i dat

Największą zaletą string.Format jest możliwość precyzyjnego formatowania danych.

double amount = 1234.5;
DateTime date = new DateTime(2025, 6, 15);

string result = string.Format(
    "Data: {0:dd.MM.yyyy}, Kwota: {1:F2} zł",
    date,
    amount);

Console.WriteLine(result);

// Wynik: Data: 15.06.2025, Kwota: 1234,50 zł

Największa wada string.Format

Problem pojawia się przy większej liczbie parametrów.

string.Format(
    "{0} kupił {1} produktów za {2}",
    totalPrice,
    userName,
    quantity);

Kod się skompiluje…

…ale dane będą w złej kolejności.

To typowy błąd produkcyjny.


Interpolacja stringów w C# – nowoczesny standard

Czym jest interpolacja?

Interpolacja została dodana w C# 6 i dziś jest standardem.

Zamiast {0}, {1} używasz nazw zmiennych bezpośrednio w stringu.

string name = "Anna";
int age = 30;

string result = $"Użytkownik {name} ma {age} lat.";

To:

  • czytelniejsze,
  • krótsze,
  • bezpieczniejsze,
  • łatwiejsze w utrzymaniu.

Formatowanie w interpolacji

Interpolacja wspiera dokładnie te same specyfikatory formatowania.

decimal amount = 1234.5m;
DateTime date = new DateTime(2025, 6, 15);

string result = $"Data: {date:dd.MM.yyyy}, Kwota: {amount:F2} zł";

Możesz używać wyrażeń

int a = 5;
int b = 3;

Console.WriteLine($"Suma wynosi {a + b}");

Czego NIE robić?

Nie wkładaj skomplikowanej logiki do interpolacji.

❌ Zły przykład:

$"{users.Where(x => x.IsActive)
       .OrderBy(x => x.Name)
       .FirstOrDefault()?.Name}"

✔ Lepsze rozwiązanie:

var activeUser = users
    .Where(x => x.IsActive)
    .OrderBy(x => x.Name)
    .FirstOrDefault();

string result = $"Aktywny użytkownik: {activeUser?.Name}";

Kod pozostaje czytelny i łatwy do debugowania.


Escape Characters w C#

Najważniejsze znaki specjalne

W stringach niektóre znaki mają specjalne znaczenie.

Escape CharacterZnaczenie
\"cudzysłów
\nnowa linia
\ttabulator
\\backslash

Przykłady

Cudzysłów

Console.WriteLine("Powiedział: \"Cześć\"");

Nowa linia

Console.WriteLine("Linia 1\nLinia 2");

Ścieżki Windows

Console.WriteLine("C:\\Users\\Anna\\Documents");

Verbatim Strings (@) w C#

Po co istnieje @?

Verbatim string mówi kompilatorowi:

„Traktuj tekst dosłownie.”

Dzięki temu nie musisz używać podwójnych backslashy.

string path = @"C:\Users\Anna\Documents\report.pdf";

Wielolinijkowe stringi

string text = @"Linia pierwsza
Linia druga
Linia trzecia";

Jak używać cudzysłowów?

W verbatim stringach podwajasz cudzysłów.

string text = @"Powiedział: ""Cześć!""";

Interpolacja + Verbatim String

Od C# 8 możesz łączyć oba mechanizmy.

string fileName = "report.pdf";
string path = $@"C:\Reports\{fileName}";

To bardzo popularne rozwiązanie w backendzie i automatyzacji.


Najlepsze praktyki pracy ze stringami w C#

Checklist production-ready

✔ Preferuj interpolację ($"")
✔ Używaj @ dla ścieżek i regexów
✔ Nie przesadzaj z logiką w interpolacji
✔ Formatuj daty jawnie
✔ Formatuj liczby jawnie (F2, N2)
✔ Dbaj o czytelność komunikatów
✔ Unikaj wielokrotnego + w dużych stringach


Kiedy używać którego rozwiązania?

RozwiązanieKiedy używać
+bardzo proste łączenie
String.Concatpraktycznie nigdy w nowym kodzie
string.Formatstarszy kod lub dynamiczne szablony
$""nowoczesny standard
@""ścieżki, regexy, multiline
$@""interpolowane ścieżki i tekst wieloliniowy

Najczęstsze błędy początkujących

1. Nadużywanie +

"User: " + user.Name + " " + user.LastName

✔ Lepsze:

$"User: {user.Name} {user.LastName}"

2. Brak jawnego formatowania dat

$"{date}"

$"{date:dd.MM.yyyy}"

3. Błędne ścieżki Windows

"C:\Users\Test"

@"C:\Users\Test"

🔗 Zobacz też

Podsumowanie

Formatowanie tekstu to jedna z tych rzeczy, które wydają się banalne…

…dopóki projekt nie urośnie.

Dobrze napisane stringi:

  • poprawiają czytelność,
  • zmniejszają liczbę błędów,
  • ułatwiają utrzymanie kodu,
  • przyspieszają debugowanie.

W nowoczesnym C# standardem jest:

  • interpolacja ($"")
  • verbatim strings (@"")
  • jawne formatowanie danych.

I właśnie tego warto trzymać się w produkcyjnym kodzie.


Zobacz także — powiązane artykuły

👉 MCP w .NET (C#) – jak zbudować serwer AI krok po kroku

👉 Tworzenie klas i obiektów w C# — kompletny przewodnik

👉 Pattern Matching w C# – switch expressions i type patterns


CTA

Jeśli materiał był pomocny:

👉 zostaw komentarz,

👉 sprawdź moje kursy .NET i C#.

👉 udostępnij artykuł komuś, kto zaczyna z programowaniem

👉 subskrybuj nasz kanał na YT!


Dołącz do “Od Zera do .NET Developera”

Zacznij swoją przygodę z programowaniem w oparciu o sprawdzone praktyki rynkowe. Wybierz kompletną ścieżkę rozwoju i zbuduj solidne fundamenty.

Dołącz do ścieżki teraz →
Masz pytania? Napisz: mariuszjurczenko@dev-hobby.pl

Dodaj komentarz