Łańcuch znaków to ciąg pojedynczych znaków (np. słowo, zdanie, kod). W C# reprezentowany jest przez typ string
, który wewnętrznie przechowuje dane jako tablicę znaków (char[]
).
✅ W C#
string
to alias typu referencyjnegoSystem.String
.
Przechowywanie jako lista obiektów char
Każdy string
składa się z pojedynczych znaków (char
), do których można uzyskać dostęp jak do elementów tablicy:
🧪 Przykład:
string tekst = "C#";
char pierwszyZnak = tekst[0]; // 'C'
Console.WriteLine("Pierwszy znak: " + pierwszyZnak);
📌 Ważne:
- Indeksowanie działa jak w tablicach (
[0]
,[1]
, itd.) string
to niemutowalny typ – nie można zmieniać pojedynczych znaków przez przypisanie (np.tekst[0] = 'A'
→ ❌ błąd)
Typ string
w C# – właściwości i cechy
✅ Główne właściwości typu string
:
- Jest referencyjny, ale zachowuje się często jak typ wartościowy (np. niezmienność).
- Jest niemutowalny – każda operacja, która zmienia tekst, tak naprawdę tworzy nowy łańcuch znaków.
- Wspiera operatory
+
,==
,!=
,+
(łączenie),[]
(dostęp do znaków).
Pomocnicze metody i właściwości dla string
C# oferuje bardzo wiele przydatnych metod dla operacji na tekstach. Oto najważniejsze:
✅ string.Empty
Zwraca pusty ciąg znaków (""
), czyli bez żadnych znaków.
string pusty = string.Empty;
Console.WriteLine(pusty.Length); // 0
✅ string.Join(separator, kolekcja)
Łączy elementy tablicy lub listy w jeden łańcuch znaków z separatorem.
string[] imiona = { "Jan", "Anna", "Piotr" };
string wynik = string.Join(", ", imiona); // "Jan, Anna, Piotr"
Console.WriteLine(wynik);
✅ Trim()
, TrimStart()
, TrimEnd()
Usuwa białe znaki (spacje, tabulatory) z początku i/lub końca tekstu.
string zSpacjami = " tekst ";
Console.WriteLine("[" + zSpacjami.Trim() + "]"); // "[tekst]"
✅ ToUpper()
, ToLower()
Zmienia wszystkie znaki na wielkie lub małe litery.
string tekst = "C# jest super!";
Console.WriteLine(tekst.ToUpper()); // "C# JEST SUPER!"
✅ Substring(start, length)
Zwraca fragment łańcucha znaków.
string kod = "AB1234";
string fragment = kod.Substring(2, 4); // "1234"
✅ Contains()
, StartsWith()
, EndsWith()
Sprawdza, czy tekst zawiera, zaczyna się lub kończy na dany ciąg.
string nazwa = "Programowanie";
Console.WriteLine(nazwa.Contains("gram")); // true
Console.WriteLine(nazwa.StartsWith("Pro")); // true
Console.WriteLine(nazwa.EndsWith("wanie")); // true
Formatowanie łańcuchów znaków
C# oferuje wiele sposobów na formatowanie tekstu – czyli tworzenie dynamicznych łańcuchów z danych liczbowych, dat, zmiennych itd.
✅ Interpolacja łańcuchów ($
)
string imie = "Kasia";
int wiek = 25;
Console.WriteLine($"Imię: {imie}, Wiek: {wiek}");
✅ Formatowanie z string.Format()
string wynik = string.Format("Wartość: {0}, Rok: {1}", 3.14, 2025);
Console.WriteLine(wynik);
✅ Formatowanie liczb i dat
double cena = 1234.5678;
Console.WriteLine($"Cena: {cena:F2} zł"); // zaokrąglenie do 2 miejsc: 1234.57 zł
DateTime teraz = DateTime.Now;
Console.WriteLine($"Dziś jest {teraz:dd.MM.yyyy}");
🧪 Przykład programu – analiza łańcucha znaków
Console.Write("Wpisz swoje imię: ");
string imie = Console.ReadLine();
Console.WriteLine($"Cześć, {imie.ToUpper()}!");
Console.WriteLine($"Twoje imię ma {imie.Length} znaków.");
if (imie.StartsWith("A"))
{
Console.WriteLine("Twoje imię zaczyna się na literę A!");
}
Rozszerzenie: inne przydatne metody
Metoda | Działanie |
---|---|
Replace(stary, nowy) | Zamienia podciąg w ciągu znaków |
Split(separator) | Dzieli tekst na tablicę |
IndexOf(znak) | Zwraca pozycję pierwszego wystąpienia |
PadLeft(n) / PadRight(n) | Dodaje znaki, aby wyrównać tekst |
Podsumowanie
Element | Przykład | Opis |
---|---|---|
Przechowywanie | tekst[0] | dostęp do pojedynczego znaku |
Właściwości | tekst.Length | liczba znaków |
Metody tekstowe | Trim() , ToUpper() | modyfikacje tekstu |
Formatowanie | $"Imię: {imie}" | interpolacja |
Łączenie | string.Join(", ", tablica) | tworzenie listy tekstowej |
✏️ Ćwiczenia
- Wpisz dowolne zdanie. Policz, ile ma znaków i ile zawiera spacji.
- Podaj numer PESEL. Wypisz tylko jego pierwsze 6 cyfr.
- Z łańcucha „Programowanie w C#” usuń białe znaki i zamień wszystkie litery na małe.
- Użyj
string.Join()
, aby z tablicy imion wygenerować jedną linię tekstu.