DEV Community

Ozodbek
Ozodbek

Posted on

StringBuilder | C#

*Salom barchaga! Bugun biz C# dastulash tilida StringBuilder sinfini ko'rib chiqamiz! *

Reja:

  • Sal kam hech qanday reja yo'q, Sababi biz bugungi darsda StringBuilderni chunchaki dialog sifatida 0 dan Prof darajagacha o'rganamiz! O'ylaymanki bu sizga va boshqalarga yoqadi. Eslatib o'tamiz ushbu maqolada men sb o'zgaruvchi nomini e'lon qilmasdan ishlatishim mumkin, lekin chalgimaslik uchun uni shunday tasavvur qiling

StringBuilder sb = new StringBuilder(); // oddiy o'zgaruvchi nomi

1 Savol: StringBuilder nima va Nimaga kerak o'zi ?
C# dasturlash tilida StringBuilder bu - Stringlarni manipulation qilish, ya'ni boshqarish. StringBuilderni ishlatishdan maqsad, bir necha o'zgarishlar kiritilishi mumkin bo'lgan stringlarni ishlashini samaraliroq qilishdir, Ya'ni biz "Hello" so'zini yoki boshqa bir so'zni, gaplarni teskari tartibda chiqaruvchi dastur tuzmoqchi bo'lsak. Ko'pincha tajribasizlik qilib stringni o'zini ishlatamiz, Lekin bu juda katta xato.
Misol: Agar string ishlatsak, String bu immutable hisoblanadi, O'zgarmas.

Buni Amaliy qilib ko'rsatsak!

string say = "Hello";
string natija = "";
for (int i = say.Length - 1; i >= 0; i--)
     natija += say[i]; 
Console.WriteLine(natija);  // olleH
Enter fullscreen mode Exit fullscreen mode

Ushbu holatda "Hello" Length 5 ga teng bo'lganligi sabab, Processor tomonida 5 marta yangi str ochiladi. yani bu 5 ta operatsiya bajaradi degani. Har for aylanganda bittadan yangi o'zgaruvchi yaratilib oxiri shu teskari chiqaradi. Bu endi biz kutgan natijani chiqargani bilan, optimal usul emas. Optimal usul qanday bo'ladi desangiz pastga qarang πŸ‘‡

using System.Text;

string say = "hello";
StringBuilder natija = new StringBuilder();
for (int i = say.Length - 1; i >= 0; i--)
    natija.Append(say[i]);
Console.WriteLine(natija); // olleh 
Enter fullscreen mode Exit fullscreen mode

Bunisi ancha yaxshi variantde πŸ˜„
Chunki StringBuilder bitta stringni o'zgartiradi. Stringni o'zi esa qayta qayta yangi string yarataveradi.

*2 savol: * - StringBuilder Classini qanday yaratishimiz mumkin ?
Xuddi pastdagidey πŸ‘‡

using System.Text;

StringBuilder salom = new StringBuilder();
Enter fullscreen mode Exit fullscreen mode

_Aytgancha ushbu classni yaratishda doim new kalit so'zi ishlatiladi!
Tushunganetion ?
_

3 - savol: StringBuilder ga matn, string qo'shish uchun qanday usullar yoki functionlar bor ?
Quyidagicha πŸ‘‡

StringBuilder salom = new StringBuilder(); 

salom.Append("alik");
salom.Append("yaxshi");
Enter fullscreen mode Exit fullscreen mode

Append(); methodi orqali qo'sha olamiz!
Tushundilami ?

*4 - savol: * StringBuilderdagi mavjud stringni qanday qilib o'zgartirishimiz mumkin ?

salom.Replace("salom", "alik");
Enter fullscreen mode Exit fullscreen mode

Replace(); methodi eng qulay methodlardan biri. Yani bu yerda birinchi parametr bo'lmish "salom" ni "alik" ga almashtirdik

*5 - savol: * StringBuilderdagi ma'lum bir indexdagi methodni olish yoki o'zgaritish qilish uchun qaysi usullar bor ?

Buning javobi oddiy insert() va remove(), To'gri shu yerda aqliy savol kelishi mumkin. Ularni farqi nimada ?

Insert() - bu StringBuilderni ma'lum bir matniga yana matn yoki belgilar qo'shish uchun. Ya'ni 3 qatordan boshlab "ozod" matnini qo'sh degandek :)

Remove() - ushbu method, StringBuilderdagi matnning ma'lum bir joyidan boshlab, ma'lum bir ta belgi o'chiradi. Yani 4 chi belgidan boshlab 2 ta belgini o'chir degandek!

Insert(); ga misol:

StringBuilder nnnn = new StringBuilder("Salom");
nnnn.Insert(6, "O'zbeklar"); // Salom O'zbeklar
Enter fullscreen mode Exit fullscreen mode

Remove(); ga misol:

StringBuilder sb = new StringBuilder("Hello Uzbeks");
sb.Remove(5, 3); // Hellobeks
Enter fullscreen mode Exit fullscreen mode

Tushundilarmi endi ?

*6 savol: * StringBuilderning uzunligini qanday aniqlashimiz mumkin ?

Javobi oddiy: Length methodi orqali, lekin shu o'rinda Lengthni olish uchun bitta int o'zgaruvchisi kerak bo'lishi mumkin. Pastdagiga qarangdaπŸ‘‡

StringBuilder sb = new StringBuilder("Hello");
int sbUzunligi = sb.Length; // 5
Enter fullscreen mode Exit fullscreen mode

*7 savol: * StringBuilder obyektini stringga o'girish uchun nima qilamiz?

Ushbu amalni bajarishimiz uchun bizga ToString() methodi yordamga keladi. Uni ishlashi oddiy >> Amaliy ko'rishingiz mumkin πŸ‘‡

string natija sb = ToString(); 
Enter fullscreen mode Exit fullscreen mode

**8 Savol: **StringBuilderning si'gimi va uni qanday o'zgartiramiz ?

Sig'im is Capasity degan
**Javob: **StringniBuilderning sig'imi degani, u uning ichki xotiradagi maksimal uzunligi. Sigimi oshib ketganda xotiradan yangi joy ajratiladi. Sigimni Capacity methodi orqali ko'rishimiz va o'zgartirishimiz mumkin πŸ‘‡

int sigim = sb.Capacity; 
sb.Capacity = 100; // sigimi 100 ta belgi uchun bo'ladi endiπŸ˜„
Enter fullscreen mode Exit fullscreen mode

**9 savol: **StringBuilderdan nega foydalanish kerak ? Afzalliklar nima uni ?

  • Tezroq ishlayd, anu stringga o'xshab yangi obyektlar yaratib o'tirmaydi.
  • Xotira samaradorligini oshiradi | chunki πŸ‘†
  • Bir necha o'zgarishlar kerak bo'lganda, qulaylikni dodasini yaratadi.

*10 savol: * StringBuilderni qachon ishlatmaslik kerak?

StringBuilderni kichik stringlar qo'shish, yoki kichik o'zgartirishlar uchun ishlatmaslik kerak. Yani kichik narsa, amaliyotlarda stringni o'zi ham yetadi. Lekin kattaroq narsaga esa StringBuilderni ishlatishimiz kerak . Agar katta narsalarda ham StringBuilder ishlatishni xohlamasangiz unda tabriklayman siz yaxshi dasturchi emassiz (Hazil albatta).

*Oxirida bir Yetim Savolcha bo'lishi mumkin πŸ˜„: StringBuilder so'zini ma'nosi nima ? *

String = matn, Builder = quruvchi =>> MatnQuruvchi

Top comments (0)