CodeGym /Kurslar /C# SELF /string sinfinin əsas metodları

string sinfinin əsas metodları

C# SELF
Səviyyə , Dərs
Mövcuddur

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
Length
name.Length
İlk simvol
[0]
name[0]
Son simvol
[name.Length - 1]
name[name.Length - 1]
Kiçik registrə
ToLower()
name.ToLower()
Böyük registrə
ToUpper()
name.ToUpper()
Alt sətrin olub-olmadığını yoxlamaq
Contains()
name.Contains("İvan")
Alt sətrin mövqeyi
IndexOf()
name.IndexOf("a")
Sətrin bir hissəsini çıxarmaq
Substring()
name.Substring(1, 3)
Sətrləri müqayisə etmək
Equals(), ==
name.Equals("Petr")
Boşluqları silmək
Trim()
name.Trim()
Ayırıcıya görə bölmək
Split()
csv.Split(',')
Massivi sətrə birləşdirmək
string.Join()
string.Join("-", array)
Bir hissəni əvəzləmək
Replace()
text.Replace("köhnə", "yeni")
Boş sətr?
IsNullOrEmpty()
string.IsNullOrEmpty(name)

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ı ==!=

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()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.

Şərhlər
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION