5-bo‘lim
Satrlar bilan ishlash
String uzunligi, kesish, qidirish, almashtirish, Split va Join, interpolyatsiya formatlari va nega StringBuilder kerak.
Ushbu bo‘lim mundarijasi
String - matn saqlaydigan tur. Visual Basic da u juda boy: o'nlab
tayyor metodlar mavjud.
Asosiy amallar #
Module Dastur
Sub Main()
Dim shahar As String = "Namangan"
Console.WriteLine(shahar.Length)
Console.WriteLine(shahar.ToUpper())
Console.WriteLine(shahar.ToLower())
Console.WriteLine(shahar.Substring(0, 4))
Console.WriteLine(shahar.Contains("man"))
Console.WriteLine(shahar.IndexOf("man"))
End Sub
End Module
8
NAMANGAN
namangan
Nama
True
2
| Metod | Nima qiladi |
|---|---|
Length | Belgilar soni |
ToUpper / ToLower | Katta / kichik harf |
Substring(boshi, uzunlik) | Bo'lakni kesib oladi |
Contains | Ichida bormi |
IndexOf | Qayerdan boshlanadi (topilmasa -1) |
Sanoq noldan boshlanadi: shahar.IndexOf("man") natijasi 2,
chunki "man" uchinchi belgidan boshlanadi.
Satr o'zgarmaydi #
Module Dastur
Sub Main()
Dim matn As String = "salom"
matn.ToUpper()
Console.WriteLine(matn)
matn = matn.ToUpper()
Console.WriteLine(matn)
End Sub
End Module
salom
SALOM
Birinchi ToUpper() chaqiruvi hech narsani o'zgartirmadi.
String metodlari asl satrni hech qachon o'zgartirmaydi. Ular
yangi satr qaytaradi.
Ya'ni matn.ToUpper() deb yozish - bekorga ish qilish. Natijani
o'zlashtirish kerak: matn = matn.ToUpper().
Bu boshlovchilar eng ko'p qiladigan xatolardan biri va kompilyator bu haqda ogohlantirmaydi - chunki kod texnik jihatdan to'g'ri.
Ortiqcha bo'shliqlarni olib tashlash #
Module Dastur
Sub Main()
Dim kirish As String = " Husanboy "
Console.WriteLine("[" & kirish & "]")
Console.WriteLine("[" & kirish.Trim() & "]")
Console.WriteLine("[" & kirish.TrimStart() & "]")
Console.WriteLine("[" & kirish.TrimEnd() & "]")
End Sub
End Module
[ Husanboy ]
[Husanboy]
[Husanboy ]
[ Husanboy]
Foydalanuvchi kiritgan matnni doim Trim() qiling - tasodifiy
bo'shliq keyinchalik topish qiyin xatolarga olib keladi.
Almashtirish va bo'lish #
Module Dastur
Sub Main()
Dim jumla As String = "olma,anor,uzum,shaftoli"
Dim mevalar() As String = jumla.Split(","c)
Console.WriteLine(mevalar.Length)
Console.WriteLine(mevalar(0))
Console.WriteLine(mevalar(3))
Console.WriteLine(String.Join(" | ", mevalar))
Console.WriteLine(jumla.Replace(",", " va "))
End Sub
End Module
4
olma
shaftoli
olma | anor | uzum | shaftoli
olma va anor va uzum va shaftoli
Split satrni massivga ajratadi, Join esa massivni qayta satrga
yig'adi. Bu ikkisi juda ko'p ishlatiladi.
Boshlanishi va oxirini tekshirish #
Module Dastur
Sub Main()
Dim fayl As String = "hisobot.pdf"
Console.WriteLine(fayl.StartsWith("hisobot"))
Console.WriteLine(fayl.EndsWith(".pdf"))
Console.WriteLine(fayl.EndsWith(".PDF"))
Console.WriteLine(fayl.EndsWith(".PDF",
StringComparison.OrdinalIgnoreCase))
End Sub
End Module
True
True
False
True
Uchinchi natija False - chunki solishtirish katta-kichik harfni
farqlaydi. Farqlamaslik kerak bo'lsa, StringComparison ni
ko'rsating.
Interpolyatsiya va formatlar #
Module Dastur
Sub Main()
Dim ism As String = "Aziza"
Dim ball As Double = 87.5
Dim narx As Decimal = 1250000D
Console.WriteLine($"{ism} - {ball} ball")
Console.WriteLine($"{ball:F1} ball")
Console.WriteLine($"{narx:N0} so'm")
Console.WriteLine($"{0.875:P0}")
End Sub
End Module
Aziza - 87.5 ball
87.5 ball
1,250,000 so'm
88%
| Format | Ma'nosi | Natija |
|---|---|---|
F1 | Kasrdan keyin 1 xona | 87.5 |
N0 | Minglik ajratgich bilan | 1,250,000 |
P0 | Foiz ko'rinishida | 88% |
D5 | Beshta xonaga to'ldirish | 00042 |
Yuqoridagi 1,250,000 da vergul ishlatilgan. Lekin bu tizim
mintaqaviy sozlamasiga bog'liq: boshqa sozlamada u 1 250 000
yoki 1.250.000 bo'lib chiqishi mumkin.
Ya'ni bu misolni o'z kompyuteringizda ishga tushirsangiz, ajratgich boshqacha bo'lishi mumkin - bu xato emas.
Natija hamma joyda bir xil bo'lishi kerak bo'lsa (masalan fayl yoki tarmoq uchun), madaniyatni aniq ko'rsating:
Imports System.Globalization
Console.WriteLine(narx.ToString("N0", CultureInfo.InvariantCulture))
Ekranga foydalanuvchi uchun chiqarayotgan bo'lsangiz, aksincha - tizim sozlamasi to'g'ri, chunki u odam kutgan ko'rinishni beradi.
Ustunlarni tekislash #
Module Dastur
Sub Main()
Console.WriteLine("Olma".PadRight(12) & "12000")
Console.WriteLine("Anor".PadRight(12) & "18000")
Console.WriteLine("Shaftoli".PadRight(12) & "9500")
Console.WriteLine(New String("-"c, 20))
Console.WriteLine("42".PadLeft(6, "0"c))
End Sub
End Module
Olma 12000
Anor 18000
Shaftoli 9500
--------------------
000042
New String("-"c, 20) - bir xil belgidan iborat satr yasaydi. Jadval
chizishda qulay.
Belgilar bo'ylab yurish #
Module Dastur
Sub Main()
Dim soz As String = "dastur"
Dim teskari As String = ""
For Each harf As Char In soz
teskari = harf & teskari
Next
Console.WriteLine(teskari)
Console.WriteLine(soz(0))
Console.WriteLine(soz(soz.Length - 1))
End Sub
End Module
rutsad
d
r
StringBuilder - ko'p ulash uchun #
Satr o'zgarmas bo'lgani uchun, har bir & amali yangi satr
yaratadi. Bir-ikki marta bo'lsa muammo yo'q, minglab marta bo'lsa -
sezilarli sekinlik.
Imports System.Text
Module Dastur
Sub Main()
Dim quruvchi As New StringBuilder()
For i As Integer = 1 To 5
If i > 1 Then quruvchi.Append(" ")
quruvchi.Append(i)
Next
quruvchi.AppendLine()
quruvchi.Append("Tugadi")
Console.WriteLine(quruvchi.ToString())
End Sub
End Module
1 2 3 4 5
Tugadi
Oddiy qoida: agar ulash siklda bo'lsa - StringBuilder.
Siklsiz bir necha ulash bo'lsa - oddiy & yoki interpolyatsiya
o'qishga qulayroq.
Ming marta ulashda farq o'nlab marta bo'lishi mumkin, chunki
StringBuilder bitta buferni kengaytirib boradi, & esa har safar
yangi satr ko'chiradi.
Foydali tekshiruvlar #
Module Dastur
Sub Main()
Dim bosh As String = ""
Dim boshliq As String = " "
Dim toliq As String = "matn"
Console.WriteLine(String.IsNullOrEmpty(bosh))
Console.WriteLine(String.IsNullOrEmpty(boshliq))
Console.WriteLine(String.IsNullOrWhiteSpace(boshliq))
Console.WriteLine(String.IsNullOrWhiteSpace(toliq))
End Sub
End Module
True
False
True
False
Farqi: IsNullOrEmpty faqat mutlaqo bo'sh satrni topadi,
IsNullOrWhiteSpace esa faqat bo'shliqdan iborat satrni ham.
Foydalanuvchi kiritgan ma'lumot uchun ikkinchisi to'g'riroq.
- O'z ismingizni katta harflarda chiqaring.
"Namangan".Substring(4)nima berishini taxmin qiling va tekshiring.matn.ToUpper()ni o'zlashtirmasdan yozing va natijani kuzating.- Vergul bilan ajratilgan beshta ismni massivga bo'ling.
- O'sha massivni
" - "bilan qayta birlashtiring. - Fayl nomi
.txtbilan tugashini katta-kichik harfga qaramay tekshiring. 1234567.891soniniN2formatida chiqaring.- Uchta mahsulot nomi va narxini
PadRightbilan ustun qilib chizing. - Berilgan so'z palindrom ekanini tekshiring.
StringBuilderbilan 1 dan 10 gacha sonlarni bitta qatorga yig'ing.
Xulosa #
Stringo'zgarmas: metodlar yangi satr qaytaradi, natijani o'zlashtirish kerak.- Sanoq noldan boshlanadi;
IndexOftopilmasa-1qaytaradi. - Foydalanuvchi kiritgan matnni doim
Trim()qiling. Splitsatrni massivga,Joinmassivni satrga aylantiradi.- Katta-kichik harfni farqlamaslik uchun
StringComparisonberiladi. - Interpolyatsiya formatlari:
F1,N0,P0,D5. - Siklda ulash bo'lsa -
StringBuilder. - Bo'sh kiritishni tekshirishda
IsNullOrWhiteSpaceishonchliroq.
Keyingi bo'limda shart operatorlarini o'rganamiz.
O‘qish tarixini saqlamoqchimisiz?
Tizimga kirsangiz, tugatgan bo‘limlaringiz saqlanadi va qoldirgan joyingizdan davom etasiz.
Xatolik topdingizmi?
Imlo xatosi, ishlamaydigan kod yoki noto‘g‘ri ma‘lumotni ko‘rsangiz - bizga xabar bering. Har bir xabar administrator tomonidan ko‘rib chiqiladi.