1. Poznajemy bliżej typ string
Typ string to jeden z najczęściej używanych typów w C#. Może nawet najczęściej używany. To po prostu świetny typ, bo w takich zmiennych możesz trzymać tekst. A do tego, w przeciwieństwie do typów int i double, obiekty typu string mają masę różnych funkcji i dzięki nim można robić różne ciekawe rzeczy.
Poza tym, wszystkie obiekty w C# (dosłownie wszystkie) mogą być zamienione na typ string. Albo, mówiąc bardziej poprawnie, wszystkie obiekty w C# zwracają swoje tekstowe (łańcuchowe) przedstawienie. Będziemy jeszcze nie raz wracać do tego typu (jest mega przydatny i ciekawy), ale dziś ogarniemy podstawy.
Tworzenie zmiennych typu string
Typ string został stworzony do przechowywania łańcuchów znaków (tekstu). Żeby stworzyć w kodzie zmienną, która będzie mogła trzymać tekst, trzeba użyć komendy:
string nazwa;
Gdzie nazwa — to nazwa zmiennej.
Przykłady:
| Komenda | Opis |
|---|---|
| string name; | Tworzy się zmienna tekstowa name |
| string message; | Tworzy się zmienna tekstowa message |
| string text; | Tworzy się zmienna tekstowa text |
Tak samo jak z typami int i double, możesz użyć krótszego zapisu do stworzenia kilku zmiennych typu string naraz:
string nazwa1, nazwa2, nazwa3;
2. Przypisywanie wartości zmiennym typu string
Żeby wrzucić do zmiennej typu string jakąś wartość, trzeba użyć komendy:
nazwa = "wartość";
I tu pojawia się pierwsza różnica względem już poznanych typów. Wszystkie wartości typu string to po prostu tekst i muszą być ujęte w podwójne cudzysłowy.
Przykłady:
| Komenda | Uwaga |
|---|---|
| string name = "Ania"; | Zmienna name zawiera tekst Ania |
| string city = "New York"; | Zmienna city zawiera tekst New York |
| string message = "Hello!"; | Zmienna message zawiera tekst Hello! |
3. Inicjalizacja zmiennych typu string
Tak jak z typami int i double, zmienne typu string możesz zainicjalizować od razu przy tworzeniu. W sumie możesz tak robić ze wszystkimi typami w C#. Więc nie będziemy już tego powtarzać.
string nazwa1 = "łańcuch1", nazwa2 = "łańcuch2";
Przykład tworzenia i inicjalizacji zmiennych
string name = "Ania", city = "New York", message = "Hello!";
Możesz zmieniać tylko zmienne z wartością
Kompilator C# będzie narzekał, jeśli zadeklarujesz zmienną bez przypisania jej wartości i spróbujesz jej użyć.
Taki kod nie zadziała:
string name;
Console.WriteLine(name); // Zmienna name nie została zainicjalizowana. Program się nie skompiluje.
int a;
a++; // Zmienna a nie została zainicjalizowana. Program się nie skompiluje.
double x;
double y = x; // Zmienna x nie została zainicjalizowana. Program się nie skompiluje.
4. Konkatenacja — sklejanie stringów
Jest bardzo fajna i prosta rzecz, którą możesz robić ze stringami w C# — możesz je sklejać. Ta operacja nazywa się konkatenacja. Albo, żeby łatwiej zapamiętać — Kon-Kot-E-Nacja. Często mówi się też po prostu „sklejanie stringów” albo nawet „dodawanie stringów”.
Żeby skleić dwa stringi, używasz znaku +. To mega proste:
"wartość1" + "wartość2"
Przykłady:
| Komenda | Uwaga |
|---|---|
| string name = "Ania" + "Ania"; | name zawiera string AniaAnia |
| string city = "New York" + "Ania"; | city zawiera string New YorkAnia |
| string message = "Hello! " + "Ania"; | message zawiera string Hello! Ania |
No i oczywiście możesz naraz sklejać wiele stringów, a także sklejać stringi i zmienne.
Przykłady:
string name = "Ania"; // name zawiera string Ania
string city = "New York"; // city zawiera string New York
string message = "Hello!" + city + name + city; // message zawiera string Hello!New YorkAniaNew York
5. Puste stringi
W ostatnim przykładzie widać, że tekst w zmiennej message jest mało czytelny, bo brakuje w nim spacji. Żeby dodać jedną lub kilka spacji, po prostu wpisz je w kodzie i zamknij w podwójnych cudzysłowach. To łatwiejsze niż się wydaje:
" "
A jeśli między cudzysłowami nie zostawisz nic (po prostu dwa podwójne cudzysłowy obok siebie), to dostaniesz tzw. „pusty string”:
""
Z jednej strony on niby jest, a z drugiej — jak go wypiszesz na ekran, to nic się nie pojawi. I jak sklejasz go z innymi stringami, to nic się nie zmienia. Taki odpowiednik zera, tylko dla stringów.
6. Uciekanie znaków specjalnych w stringach
Już wiesz, że stringi otacza się podwójnymi cudzysłowami. Ale co zrobić, jeśli chcesz wstawić do stringa cudzysłów? Jeśli wpiszesz cudzysłów w stringu, czy kompilator nie potraktuje go jako końca stringa?
Dokładnie tak. Potraktuje. Dlatego cudzysłów w środku tekstu zamieniamy na dwa znaki \". I kod wygląda tak:
string quote = "On powiedział: \"Cześć!\"";
Console.WriteLine(quote); // On powiedział: "Cześć!"
W rzeczywistości jest jeszcze trochę sprytniej. Znak \ jest traktowany jako specjalny (sterujący) znak w stringach. Dzięki niemu możesz wstawiać różne "niedrukowalne znaki" jak nowa linia, tabulator itp. A żeby wstawić sam znak \, trzeba go napisać dwa razy.
Oto 4 najczęściej używane kombinacje:
| Zapis | Znaczenie |
|---|---|
| \n | Nowa linia (newline) |
| \t | Tabulator (wcięcie) |
| \\ | Dosłownie \ |
| \" | Cudzysłów w stringu |
Przykład:
string multiline = "Linia 1\nLinia 2";
Console.WriteLine(multiline);
Wypisze:
// Linia 1
// Linia 2
7. Interpolacja stringów ($-stringi)
C# — to bardzo nowoczesny język i pozwala łatwo i ładnie wstawiać wartości zmiennych do stringa za pomocą interpolacji — po prostu dodaj przed cudzysłowem znak $, a w środku stringa używaj nawiasów klamrowych {}. Już o tym wiesz.
Ale czego możesz jeszcze nie wiedzieć, to to, że w nawiasach klamrowych możesz używać całych wyrażeń, a nawet wywoływać funkcje! Przykład:
string name = "Ola";
int birthYear = 1999;
string info = $"Mam na imię {name}, mam {2025-birthYear} lat.";
Console.WriteLine(info); // Mam na imię Ola, mam 26 lat.
Takie podejście mocno poprawia czytelność i zmniejsza ilość błędów (i nawiasów). O interpolacji pogadamy jeszcze na osobnym wykładzie, ale do prostych przypadków możesz już śmiało używać.
8. Własne funkcje stringów
Typ string ma swoje własne funkcje (nazywane też metodami). Jest ich naprawdę sporo i bardzo ułatwiają życie programistom. Dziś poznasz kilka z nich (tych najprostszych). Przykład:
| Funkcja | Opis | Przykład wyniku |
|---|---|---|
| str.Length | Długość stringa | "abc".Length → 3 |
| str.ToUpper() | Na wielkie litery | "abc".ToUpper() → "ABC" |
| str.ToLower() | Na małe litery | "ABC".ToLower() → "abc" |
| str.Trim() | Usuwa spacje z początku i końca | " x y ".Trim() → "x y" |
Przykłady użycia funkcji stringów
Wszystkie te funkcje wywołujesz tak: zmienna.funkcja(...) .
Sprawdź długość stringa:
string name = "Andrzej";
int length = name.Length;
Console.WriteLine(length); // 7, bo 7 liter
Zamień string na wielkie lub małe litery:
string original = "Cześć";
Console.WriteLine(original.ToUpper()); // CZEŚĆ
Console.WriteLine(original.ToLower()); // cześć
Usuń spacje z początku i końca (mega przydatne przy wczytywaniu z klawiatury):
string messy = " hello ";
Console.WriteLine(messy.Trim()); // "hello"
Każda taka funkcja zwraca nowy string, stary string nie zmienia się.
GO TO FULL VERSION