C# tilida StringBuilder sinfi katta miqdordagi matnlarni samarali tarzda boshqarish uchun ishlatiladi. Oddiy string tipidan farqli o'laroq, StringBuilder matnni o'zgartirganda yangi obyekt yaratmaydi, balki mavjud obyekt ustida o'zgarishlar qiladi. Bu, ayniqsa, ko'p marta matn bilan ishlash jarayonida samaradorlikni oshiradi.
StringBuilder sinfining asosiy xususiyatlari:
- Tezlik va samaradorlik: Ko'p o'zgaruvchan matnlar ustida ishlashda
stringdan ko'ra samaraliroq, chunkistringhar safar o'zgarganda yangi obyekt yaratadi. - Dinamik o'lcham:
StringBuildero'zgaruvchan uzunlikdagi matnni boshqaradi, ya'ni matn uzunligi o'zgarishi bilan joy ajratadi. - Matn qo'shish va o'chirish: Turli xil usullar yordamida matn qo'shish, o'chirish yoki almashtirish imkoniyatini beradi.
Asosiy metodlar:
Append(): Matn oxiriga yangi qiymat qo‘shadi.
Insert(): Belgilangan indeksga matn qo'shadi.
Remove(): Belgilangan indeksdan boshlab belgilarni olib tashlaydi.
Replace(): Belgilangan matnni boshqa matn bilan almashtiradi.
Misollar
Misol 1: Append() va ToString()
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder tekst = new StringBuilder("Salom, ");
tekst.Append("dunyo!");
Console.WriteLine(tekst.ToString());
}
}
Natija:
Salom, dunyo!
Bu yerda Append() metodi orqali "dunyo!" qismi matnning oxiriga qo'shildi. So'ng ToString() metodi bilan yakuniy natija string ga aylantirildi.
Misol 2: Insert()
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Salom!");
sb.Insert(5, ", Dunyo");
Console.WriteLine(sb.ToString());
}
}
Natija:
Salom, Dunyo!
Bu misolda Insert() metodi yordamida 5-indeksga "Dunyo" matni qo'shildi.
Misol 3: Remove()
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Salom, Dunyo!");
sb.Remove(6, 6);
Console.WriteLine(sb.ToString());
}
}
Natija:
Salom!
Bu yerda Remove() metodi 6-indeksdan boshlab 6 ta belgini o'chirdi, natijada "Dunyo" qismi olib tashlandi.
Misol 4: Replace()
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Salom, Dunyo!");
sb.Replace("Dunyo", "Olam");
Console.WriteLine(sb.ToString());
}
}
Natija:
Salom, Olam!
Bu misolda Replace() metodi orqali "Dunyo" so'zi "Olam" so'zi bilan almashtirildi.
StringBuilder C# tilida matnni dinamik boshqarish uchun mo‘ljallangan sinf bo‘lib, matn bilan tez va samarali ishlash imkonini beradi. Endi yana ko'proq tafsilot va misollar bilan tushuntirib o'taman.
StringBuilder ning asosiy ishlatilishi:
C# tilida oddiy string o'zgarmas (immutable) bo'lgani uchun, u bilan har qanday o'zgarish (matn qo'shish, olib tashlash yoki almashtirish) yangi obyekt yaratadi va bu katta hajmdagi matn bilan ishlaganda samaradorlikni pasaytirishi mumkin. StringBuilder esa bu muammoni hal qiladi, chunki u o'zgartirilsa, yangi obyekt yaratmaydi, mavjud obyektni o'zgartiradi.
Asosiy metodlar:
Append(): Matn oxiriga yangi qiymat qo‘shadi.
Insert(): Belgilangan indeksga matn qo'shadi.
Remove(): Belgilangan indeksdan boshlab belgilarni olib tashlaydi.
Replace(): Belgilangan matnni boshqa matn bilan almashtiradi.
Clear(): Butun matnni o‘chiradi.
Length va Capacity: StringBuilder ning uzunligi va sig‘imini boshqarish.
Kengaytirilgan misollar
Misol 1: Ko‘p marta Append() ishlatish
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
sb.Append("Bugun havo ");
sb.Append("juda yaxshi. ");
sb.Append("Biz ko'chat ekamiz.");
Console.WriteLine(sb.ToString());
}
}
Natija:
Bugun havo juda yaxshi. Biz ko'chat ekamiz.
Bu yerda Append() metodi ko'p marta chaqirilib, matnni birlashtirishda samarali foydalanildi.
Misol 2: Insert() bilan matn qo'shish
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Salom Olam!");
sb.Insert(6, "yangi ");
Console.WriteLine(sb.ToString());
}
}
Natija:
Salom yangi Olam!
Bu yerda 6-indeksga "yangi" so'zi qo'shildi. Insert() usuli indeks bo'yicha matnni kiritadi.
Misol 3: Remove() bilan belgilarni o'chirish
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Salom Olam!");
sb.Remove(6, 5);
Console.WriteLine(sb.ToString());
}
}
Natija:
Salom!
Bu yerda 6-indeksdan boshlab 5 ta belgi o'chirildi. Natijada "Olam!" so'zlari olib tashlandi.
Misol 4: Replace() bilan almashtirish
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Yoz yaxshi fasl.");
sb.Replace("Yoz", "Bahor");
Console.WriteLine(sb.ToString());
}
}
Natija:
Bahor yaxshi fasl.
Bu yerda Replace() metodi "Yoz" so'zini "Bahor" so'zi bilan almashtirdi.
Misol 5: Clear() bilan tozalash
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Bu matnni o'chiramiz.");
sb.Clear();
Console.WriteLine(sb.ToString());
}
}
Natija:
(matn bo'sh bo'ladi)
Bu yerda Clear() butun matnni o'chiradi va StringBuilder ni bo'sh holatga keltiradi.
Misol 6: Capacity va Length
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder("Salom!");
Console.WriteLine("Uzunligi: " + sb.Length); // Matn uzunligi
Console.WriteLine("Sig'imi: " + sb.Capacity); // Sig'imi (ajratilgan xotira)
sb.Append(" Bu yangi matndir.");
Console.WriteLine("Yangi uzunlik: " + sb.Length);
Console.WriteLine("Yangi sig'im: " + sb.Capacity);
}
}
Natija:
Uzunligi: 6
Sig'imi: 16
Yangi uzunlik: 23
Yangi sig'im: 32
Bu yerda Length matnning uzunligini bildiradi,Capacity esa StringBuilder ga ajratilgan xotirani ko'rsatadi. Matn uzayganda Capacity avtomatik ravishda kengaytiriladi.
Misol 7: AppendFormat() bilan formatlash
using System;
using System.Text;
class Program
{
static void Main()
{
StringBuilder sb = new StringBuilder();
sb.AppendFormat("Bugungi sana: {0:D}", DateTime.Now);
Console.WriteLine(sb.ToString());
}
}
Natija:
Bugungi sana: 29 sentabr 2024 yil (Yil va sana kompyuter vaqtiga qarab o'zgaradi)
Bu yerda AppendFormat() yordamida matn formatlash mumkin. {0:D} format string bo'lib, DateTime obyekti uchun format qo'llanilgan.
Xulosa
StringBuilder:
- Tez ishlaydi va ko‘p marta o‘zgaruvchan matnlar bilan ishlashda samarali.
- Qo‘shimcha funksiyalar (Append(), Insert(), Remove(), Replace()) bilan matnni dinamik boshqarish imkonini beradi.
- Katta matn ustida ishlashda tavsiya etiladi, chunki u har safar yangi obyekt yaratmaydi, balki mavjud obyektni o‘zgartiradi.
Top comments (0)