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
string
dan ko'ra samaraliroq, chunkistring
har safar o'zgarganda yangi obyekt yaratadi. - Dinamik o'lcham:
StringBuilder
o'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)