1. string tipini daha yaxından öyrənirik
string tipi C#-da ən çox istifadə olunan tiplərdən biridir. Hətta bəlkə də ən çox istifadə olunanıdır. Bu, sadəcə möhtəşəm tipdir, çünki belə dəyişənlərdə mətn saxlamaq olur. Üstəlik, int və double tiplərindən fərqli olaraq, string tipli obyektlərin bir yığın müxtəlif funksiyaları var və bu funksiyalarla maraqlı şeylər etmək olur.
Bundan əlavə, C#-da bütün obyektlər (bəli, hamısı) string tipinə çevrilə bilər. Yəni, daha dəqiq desək, bütün obyektlər C#-da öz mətn (sətir) təsvirini qaytarır. Biz bu tipə hələ dəfələrlə qayıdacağıq (çox faydalı və maraqlıdır), amma bu gün onun əsasları ilə tanış olacağıq.
string tipli dəyişənlərin yaradılması
string tipi sətirləri (mətnləri) saxlamaq üçün yaradılıb. Koddakı dəyişəni yaratmaq üçün, hansı ki mətn saxlaya biləcək, belə yazırsan:
string ad;
Burada ad — dəyişənin adıdır.
Nümunələr:
| Əmr | Təsvir |
|---|---|
| string name; | name adlı string dəyişən yaradılır |
| string message; | message adlı string dəyişən yaradılır |
| string text; | text adlı string dəyişən yaradılır |
int və double tiplərində olduğu kimi, string tipli bir neçə dəyişəni qısa şəkildə də yarada bilərsən:
string ad1, ad2, ad3;
2. string tipli dəyişənlərə dəyər vermək
string tipli dəyişənə dəyər vermək üçün belə yazırsan:
ad = "dəyər";
Və budur, artıq öyrəndiyimiz tiplərdən ilk fərq. string tipinin bütün dəyərləri mətn sətirləridir və mütləq iki dırnaq işarəsi arasında yazılır.
Nümunələr:
| Əmr | Qeyd |
|---|---|
| string name = "Anya"; | name dəyişəni Anya mətnini saxlayır |
| string city = "New York"; | city dəyişəni New York mətnini saxlayır |
| string message = "Hello!"; | message dəyişəni Hello! mətnini saxlayır |
3. string tipli dəyişənlərin ilkinizasiyası
int və double tiplərində olduğu kimi, string tipli dəyişənləri də yaradanda birbaşa ilkinizasiya edə bilərsən. Əslində, bu, C#-da bütün tiplər üçün keçərlidir. Ona görə də artıq bu barədə danışmayacağıq.
string ad1 = "setir1", ad2 = "setir2";
Dəyişənlərin yaradılması və ilkinizasiyası nümunəsi
string name = "Anya", city = "New York", message = "Hello!";
Yalnız dəyəri olan dəyişənləri dəyişmək olar
C#-kompilyatoru əsəbləşəcək, əgər dəyişəni elan edib ona heç bir dəyər verməsən və istifadə etməyə çalışsan.
Belə kod işləməyəcək:
string name;
Console.WriteLine(name); // name dəyişəni ilkinizasiya olunmayıb. Proqram kompilyasiya olunmayacaq.
int a;
a++; // a dəyişəni ilkinizasiya olunmayıb. Proqram kompilyasiya olunmayacaq.
double x;
double y = x; // x dəyişəni ilkinizasiya olunmayıb. Proqram kompilyasiya olunmayacaq.
4. Konkatenasiya — sətirlərin birləşdirilməsi
C#-da sətirlərlə edə biləcəyin çox maraqlı və asan bir şey var — onları birləşdirmək. Bu əməliyyata konkatenasiya deyilir. Yəni, yadında saxlamaq üçün — Kon-Kote-Nasiya. Amma çox vaxt buna "sətirlərin birləşdirilməsi" və ya sadəcə "sətirlərin toplanması" da deyirlər.
İki sətiri birləşdirmək üçün + işarəsindən istifadə edirsən. Çox asandır:
"dəyər1" + "dəyər2"
Nümunələr:
| Əmr | Qeyd |
|---|---|
| string name = "Anya" + "Anya"; | name dəyişəni AnyaAnya sətirini saxlayır |
| string city = "New York" + "Anya"; | city dəyişəni New YorkAnya sətirini saxlayır |
| string message = "Hello! " + "Anya"; | message dəyişəni Hello! Anya sətirini saxlayır |
Əlbəttə, eyni anda bir neçə sətiri də toplaya bilərsən, həmçinin sətirləri və dəyişənləri də birləşdirə bilərsən.
Nümunələr:
string name = "Anya"; // name dəyişəni "Anya" sətirini saxlayır
string city = "New York"; // city dəyişəni "New York" sətirini saxlayır
string message = "Hello!" + city + name + city; // message dəyişəni "Hello!New YorkAnyaNew York" sətirini saxlayır
5. Boş sətirlər
Sonuncu nümunədə görürsən ki, message dəyişənindəki mətn oxunmur, çünki orada boşluqlar çatışmır. Bir boşluq və ya bir neçə boşluq əlavə etmək üçün sadəcə kodda onları yazırsan və iki dırnaq işarəsi arasında qoyursan. Bu, düşündüyündən də asandır:
" "
Yeri gəlmişkən, əgər dırnaqlar arasında heç nə qoymasan (sadəcə iki dırnaq işarəsi), bu zaman "boş sətir" alınır:
""
Bir tərəfdən, o var, amma digər tərəfdən, ekrana çıxanda heç nə çıxmır. Və başqa sətirlərlə birləşdirəndə də heç nə olmur. Sətirlər üçün sıfırın analoqu kimi bir şeydir.
6. Sətirlərdə xüsusi simvolların escape edilməsi
Artıq bilirsən ki, sətirlər iki dırnaq işarəsi ilə əhatə olunur. Bəs sətirin içində dırnaq işarəsi yazmaq lazım olsa necə? Əgər sətirdə dırnaq işarəsi yazsaq, kompilyator onu sətirin sonu kimi qəbul etməyəcək?
Düzdü. Qəbul edəcək. Ona görə də mətnin içində dırnaq işarəsi \" ilə əvəz olunur. Kod belə olacaq:
string quote = "O dedi: \"Salam!\"";
Console.WriteLine(quote); // O dedi: "Salam!"
Əslində, hər şey bir az daha hiyləgərdir. \ simvolu sətirlərin içində xüsusi (idarəedici) simvol sayılır. Onun köməyi ilə müxtəlif "çap olunmayan simvolları" — məsələn, yeni sətrə keçid, tabulyasiya və s. yazmaq olur. Və əgər \ simvolunun özünü yazmaq lazımdırsa, onu 2 dəfə yazırsan.
Ən çox istifadə olunan 4 kombinasiya bunlardır:
| Yazılış | Məna |
|---|---|
| \n | Yeni sətrə keçid (newline) |
| \t | Tabulyasiya (boşluq) |
| \\ | Əslində \ |
| \" | Sətirin içində dırnaq işarəsi |
Nümunə:
string multiline = "Setir 1\nSetir 2";
Console.WriteLine(multiline);
Ekrana çıxacaq:
// Setir 1
// Setir 2
7. Sətir interpolasiyası ($-sətirlər)
C# — çox müasir dildir və dəyişənlərin dəyərlərini sətirin içinə rahat və gözəl şəkildə yerləşdirməyə imkan verir — interpolasiya əməliyyatı ilə. Sadəcə dırnaqlardan əvvəl $ işarəsi qoyursan, sətirin içində isə {} mötərizələrindən istifadə edirsən. Bunu artıq bilirsən.
Amma bilmədiyin odur ki, mötərizələrin içində tam ifadələr və hətta funksiyaları da çağırmaq olar! Nümunə:
string name = "Olya";
int birthYear = 1999;
string info = $"Mənim adım {name}, mənim {2025-birthYear} yaşım var.";
Console.WriteLine(info); // Mənim adım Olya, mənim 26 yaşım var.
Belə yanaşma oxunaqlılığı artırır və səhvlərin (və mötərizələrin) sayını azaldır. İnterpolasiya haqqında ayrıca mühazirədə daha ətraflı danışacağıq, amma sadə hallarda artıq rahatlıqla istifadə edə bilərsən.
8. Sətirlərin öz funksiyaları
string tipinin öz funksiyaları (metodları) var. Onların sayı çoxdur və proqramçının işini asanlaşdırır. Bu gün onların bəziləri (ən sadələri) ilə tanış olacaqsan. Nümunə:
| Funksiya | Təsvir | Nümunə nəticə |
|---|---|---|
| str.Length | Sətirin uzunluğu | "abc".Length → 3 |
| str.ToUpper() | Böyük hərflərə çevir | "abc".ToUpper() → "ABC" |
| str.ToLower() | Kiçik hərflərə çevir | "ABC".ToLower() → "abc" |
| str.Trim() | Kənarlardakı boşluqları sil | " x y ".Trim() → "x y" |
Sətir funksiyaları ilə işləmək nümunələri
Bütün bu funksiyalar belə çağırılır: dəyişən.funksiya(...) .
Sətirin uzunluğunu tapmaq:
string name = "Andrey";
int length = name.Length;
Console.WriteLine(length); // 6, çünki 6 hərf
Sətiri böyük və ya kiçik hərflərə çevirmək:
string original = "Salam";
Console.WriteLine(original.ToUpper()); // SALAM
Console.WriteLine(original.ToLower()); // salam
Kənarlardakı boşluqları silmək (klaviaturadan daxil edəndə çox faydalıdır):
string messy = " hello ";
Console.WriteLine(messy.Trim()); // "hello"
Hər belə funksiya yeni sətir qaytarır, köhnə sətir isə dəyişmir.
GO TO FULL VERSION