CodeGym /Kursy /C# SELF /Łańcuchy znaków i tekst: typ string, praca z tekstem

Łańcuchy znaków i tekst: typ string, praca z tekstem

C# SELF
Poziom 2 , Lekcja 2
Dostępny

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;
Tworzenie zmiennej typu string

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;
Tworzenie zmiennych typu string

2. Przypisywanie wartości zmiennym typu string

Żeby wrzucić do zmiennej typu string jakąś wartość, trzeba użyć komendy:

nazwa = "wartość";
Przypisanie wartości do zmiennej typu string

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";
Tworzenie zmiennych typu string

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"
Konkatenacja dwóch stringów

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:

" "
String zawierający jedną spację

A jeśli między cudzysłowami nie zostawisz nic (po prostu dwa podwójne cudzysłowy obok siebie), to dostaniesz tzw. „pusty string”:

""
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ę.

Komentarze
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION