1. Giriş
Praktikada ən çox belə string tapşırıqları olur:
- Sətrin uzunluğunu öyrənmək (və boş olub-olmadığını yoxlamaq).
- Hərflərin registrini dəyişmək (HAMISINI BÖYÜK və ya hamısını kiçik etmək).
- Sətrin içində axtarılan sözü və ya simvolu tapmaq.
- "Pis sözü" daha uyğun bir sözlə əvəzləmək.
- Sətri ayırıcıya görə hissələrə bölmək ("nömrələrin siyahısı vergüllə ayrılıb").
- Sətrin əvvəlində və sonunda olan boşluqları silmək.
- Sətrin bir hissəsini almaq (məsələn, soyadın ilk 3 hərfi).
- İki sətri müqayisə etmək — registri nəzərə almadan eynidirmi?
Bu tapşırıqların hər biri üçün string sinfində öz metodu var.
Açar metodların cədvəli
| Əməliyyat | Metod/Xüsusiyyət | Nümunə |
|---|---|---|
| Sətrin uzunluğu | |
|
| İlk simvol | |
|
| Son simvol | |
|
| Kiçik registrə | |
|
| Böyük registrə | |
|
| Alt sətrin olub-olmadığını yoxlamaq | |
|
| Alt sətrin mövqeyi | |
|
| Sətrin bir hissəsini çıxarmaq | |
|
| Sətrləri müqayisə etmək | |
|
| Boşluqları silmək | |
|
| Ayırıcıya görə bölmək | |
|
| Massivi sətrə birləşdirmək | |
|
| Bir hissəni əvəzləmək | |
|
| Boş sətr? | |
|
Bu gün onların bəzilərini izah edəcəyik.
2. Sətrə massiv kimi yanaşmaq
Sətrin uzunluğu: Length xüsusiyyəti
Ən sadə — sətrin neçə simvoldan ibarət olduğunu öyrənmək. Bunun üçün Length xüsusiyyətindən istifadə edirik. Nümunə:
string name = "Arkadiy";
Console.WriteLine(name.Length); // Çap edəcək: 7
- Length — bu xüsusiyyətdir (metod deyil), ona görə mötərizə lazım deyil.
- Əgər sətr boşdursa (""), uzunluq 0 olacaq.
Bəzən sətrin uzunluğunu yoxlamaq faydalıdır, xüsusilə "riskli" bir şey etməzdən əvvəl (məsələn, substring götürmək).
İndeksə görə simvol almaq: [i] indeksatoru
Massivlərlə işləyən kimi: sətr — simvollardan ibarət massivdir. Nümunə:
string hello = "Salam";
char firstChar = hello[0]; // 'S'
char lastChar = hello[^1]; // 'm'
Console.WriteLine(firstChar);
- İndeksləmə sıfırdan başlayır!
- Diqqətli ol: mövcud olmayan indeksə müraciət etsən (hello[100]), exception atacaq.
3. Sətrlərin müqayisəsi
Sətr operatorları == və !=
C# dilində bu operatorlar sadəcə iki sətrin məzmununu müqayisə edir.
string word1 = "Hello";
string word2 = "Hello";
bool areEqual = word1 == word2; // true
Equals metodu
== operatorundan fərqli olaraq, Equals metoduna parametrlər ötürmək olur. Məsələn, registrə baxmadan sətrləri müqayisə etmək — "Mama" == "mama" və bərabərdir "MAMA". Nümunə:
string pass1 = "Qwerty";
string pass2 = "qwerty";
// standart müqayisə, registr nəzərə alınır
bool isSame = pass1.Equals(pass2); // false
// registrə baxmadan müqayisə
bool ignoreCase = pass1.Equals(pass2, StringComparison.OrdinalIgnoreCase); // true
4. Registrin dəyişdirilməsi
Sətri böyük (və ya kiçik) registrə çevirmək üçün string sinfində 2 xüsusi metod var: ToLower() və ToUpper().
İstəyirsən ki, istifadəçi sənin mesajını "VACİB!" stilində görsün? Yaxud bütün adları müqayisə üçün kiçik registrə salmaq lazımdır? Çox asandır:
string text = "Mene Heç Bir Boz Qurd Qorxulu Deyil!";
Console.WriteLine(text.ToUpper()); // MENE HEÇ BIR BOZ QURD QORXULU DEYIL!
Console.WriteLine(text.ToLower()); // mene heç bir boz qurd qorxulu deyil!
- Diqqət: ilkin sətr dəyişmir!
- Sətrləri registrə baxmadan müqayisə etmək üçün istifadə oluna bilər.
5. Artıq boşluqları silmək
Bəs istifadəçi təsadüfən (ya da bilərəkdən, kim bilir) adın əvvəlində və sonunda boşluq qoyubsa? Trim kömək edəcək! O, üç variantda var:
- Trim — sətrin əvvəlində və sonunda olan bütün boşluqları silir;
- TrimStart — sətrin əvvəlindəki boşluqları silir;
- TrimEnd — sətrin sonundakı boşluqları silir.
string raw = " Goşa ";
string cleaned = raw.Trim(); // "Goşa"
Console.WriteLine($"[{cleaned}]");
6. Alt sətr almaq: Substring
Bəzən sətrin yalnız bir hissəsini çıxarmaq lazımdır.
string word = "Salam";
string part = word.Substring(2); // "lam"
string part2 = word.Substring(2, 3); // "lam"
- Substring(startIndex) — startIndex simvolundan sona qədər.
- Substring(startIndex, length) — startIndex-dən başlayaraq length qədər simvol.
Diqqət: əgər sətrin sərhədlərindən kənara çıxırsansa və ya length < 0 olarsa, exception alacaqsan!
7. Sətrin boş olub-olmadığını yoxlamaq
Sətri istifadə etməzdən əvvəl (məsələn, interpolasiyada) yoxlamaq lazımdır ki, o null deyil və boş deyil, yoxsa səhv və ya gözlənilməz nəticə ala bilərsən.
a) null-a görə == operatoru ilə yoxlamaq
string s = null;
if (s == null)
Console.WriteLine("Sətr null-dır");
Minus: boş sətri ("") tutmur.
b) string.IsNullOrEmpty() ilə yoxlamaq
Həm null, həm də boş sətri yoxlayır:
string s = "";
if (string.IsNullOrEmpty(s))
Console.WriteLine("Sətr boşdur və ya null-dır");
c) string.IsNullOrWhiteSpace() ilə yoxlamaq
Əlavə olaraq, yalnız boşluqlardan, tablardan və digər "görünməz" simvollardan ibarət sətrləri də nəzərə alır:
string s = " ";
if (string.IsNullOrWhiteSpace(s))
Console.WriteLine("Sətr boşdur, null-dır və ya yalnız boşluqlardan ibarətdir");
8. Sətr metodları ilə işləyərkən tipik səhvlər
- Ən çox rast gəlinən — sətrlərin dəyişməz (immutable) olduğunu unutmaq, yuxarıda izah etdiyimiz kimi.
- Başqa bir populyar səhv — axtarış və müqayisədə registrə həssaslığı unutmaq.
Məsələn, istifadəçi "andrey" adını daxil edərsə, amma siyahıda artıq "Andrey" varsa, sadəcə Contains və ya == istifadə etmək işə yaramaya bilər, əgər hər iki sətri eyni registrə gətirməsən və ya uyğun overload-dan istifadə etməsən.
Həmçinin, indeks qaytaran metodlarla ehtiyatlı ol. İndekslər sıfırdan başlayır və əgər -1 qayıtdısa, deməli heç nə tapılmadı, "0-cı indeks" deyil.
GO TO FULL VERSION