4-bo‘lim
Satrlar bilan ishlash
Satr shablonlari, xom satrlar va trimIndent, asosiy metodlar, split va joinToString, hamda nega Kotlin da == satrlar uchun to'g'ri ishlaydi.
Ushbu bo‘lim mundarijasi
String - matn saqlaydigan tur. Kotlin da u juda qulay: shablonlar,
xom satrlar va o'nlab tayyor metodlar bor.
Shablonlar #
fun main() {
val ism = "Nodira"
val ball = 88
println("Talaba: $ism")
println("Ball: $ball")
println("Keyingi ball: ${ball + 5}")
println("Ism uzunligi: ${ism.length}")
}
Talaba: Nodira
Ball: 88
Keyingi ball: 93
Ism uzunligi: 6
Qoida sodda:
$nom- oddiy o'zgaruvchi uchun.${ifoda}- nuqta, amal yoki chaqiruv bo'lsa, qavs majburiy.
Dollar belgisining o'zi kerak bo'lsa #
fun main() {
val narx = 25
println("Narxi: \$$narx")
println("${'$'}{bu shablon emas}")
}
Narxi: $25
${bu shablon emas}
\$ - ekranlangan dollar. Ikkinchi usul biroz g'alati ko'rinadi,
lekin xom satrlarda zarur bo'ladi.
Asosiy metodlar #
fun main() {
val shahar = "Namangan"
println(shahar.length)
println(shahar.uppercase())
println(shahar.lowercase())
println(shahar.substring(0, 4))
println(shahar.contains("man"))
println(shahar.indexOf("man"))
println(shahar.first())
println(shahar.last())
println(shahar.reversed())
}
8
NAMANGAN
namangan
Nama
true
2
N
n
nagnamaN
| Metod | Nima qiladi |
|---|---|
length | Belgilar soni (qavssiz - bu xossa) |
uppercase() / lowercase() | Katta / kichik harf |
substring(a, b) | a dan b gacha kesib oladi |
contains(x) | Ichida bormi |
indexOf(x) | Qayerdan boshlanadi; topilmasa -1 |
first() / last() | Birinchi va oxirgi belgi |
reversed() | Teskari aylantiradi |
Sanoq noldan boshlanadi.
Eski Kotlin kodida toUpperCase() va toLowerCase() uchraydi. Ular
hali ishlaydi, lekin eskirgan deb belgilangan.
Yangi nomlar - uppercase() va lowercase(). Sabab: eskilari tizim
tiliga qarab har xil ishlar edi va turk tilida i harfi kutilmagan
natija berardi. Yangilari esa har joyda bir xil ishlaydi.
Satr o'zgarmas #
fun main() {
val matn = "salom"
matn.uppercase()
println(matn)
val yangi = matn.uppercase()
println(yangi)
}
salom
SALOM
String metodlari asl satrni o'zgartirmaydi - yangi satr
qaytaradi. Natijani o'zlashtirmasangiz, u tashlab yuboriladi.
Xom satrlar #
fun main() {
val xabar = """
Hurmatli talaba,
Imtihon 15-sentabrda bo'ladi.
Vaqt: 10:00
""".trimIndent()
println(xabar)
}
Hurmatli talaba,
Imtihon 15-sentabrda bo'ladi.
Vaqt: 10:00
Uchta qo'sh tirnoq ichida hamma narsa xuddi yozilganidek qoladi: yangi qatorlar, tirnoqlar, teskari chiziqlar.
trimIndent() esa chap tomondagi umumiy bo'shliqni olib tashlaydi -
usiz kod ichidagi joylashuv ham natijaga tushardi.
fun main() {
val yol = """C:\Users\Husanboy\hujjatlar"""
val json = """{"ism": "Malika", "ball": 88}"""
println(yol)
println(json)
}
C:\Users\Husanboy\hujjatlar
{"ism": "Malika", "ball": 88}
Windows yo'llari va JSON uchun juda qulay - hech narsani ekranlash kerak emas.
Bo'shliqlarni tozalash #
fun main() {
val kirish = " Husanboy "
println("[$kirish]")
println("[${kirish.trim()}]")
println("[${kirish.trimStart()}]")
println("[${kirish.trimEnd()}]")
}
[ Husanboy ]
[Husanboy]
[Husanboy ]
[ Husanboy]
Foydalanuvchi kiritgan matnni doim trim() qiling.
Bo'lish va birlashtirish #
fun main() {
val jumla = "olma,anor,uzum,shaftoli"
val mevalar = jumla.split(",")
println(mevalar.size)
println(mevalar[0])
println(mevalar)
println(mevalar.joinToString(" | "))
println(mevalar.joinToString(", ", "[", "]"))
println(jumla.replace(",", " va "))
}
4
olma
[olma, anor, uzum, shaftoli]
olma | anor | uzum | shaftoli
[olma, anor, uzum, shaftoli]
olma va anor va uzum va shaftoli
joinToString ning uchta argumenti: ajratgich, boshi va oxiri.
Solishtirish #
fun main() {
val a = "salom"
val b = "salom"
val c = buildString { append("sa"); append("lom") }
println(a == b)
println(a == c)
println(a === c)
println("SALOM".equals("salom", ignoreCase = true))
}
true
true
false
true
Java dan kelganlar buni ko'rib yengil nafas oladi.
Java da == ikki satrning xotiradagi bir joyda turishini
tekshiradi, mazmunini emas - shuning uchun u yerda equals() yozish
majburiy va uni unutish klassik xato.
Kotlin da == mazmunni solishtiradi. Havolani solishtirish kerak
bo'lsa, uchta belgi ishlatiladi: ===.
Yuqoridagi misolda a === c natijasi false - chunki c alohida
qurilgan yangi obyekt, garchi mazmuni bir xil bo'lsa ham.
Tekshirish va tekislash #
fun main() {
val fayl = "hisobot.pdf"
println(fayl.startsWith("hisobot"))
println(fayl.endsWith(".pdf"))
println(fayl.endsWith(".PDF"))
println(fayl.endsWith(".PDF", ignoreCase = true))
println("Olma".padEnd(12) + "12000")
println("42".padStart(6, '0'))
println("-".repeat(20))
}
true
true
false
true
Olma 12000
000042
--------------------
Bo'shlikni tekshirish #
fun main() {
val bosh = ""
val boshliq = " "
val toliq = "matn"
println(bosh.isEmpty())
println(boshliq.isEmpty())
println(boshliq.isBlank())
println(toliq.isNotBlank())
val kiritilgan: String? = null
println(kiritilgan.isNullOrBlank())
}
true
false
true
true
true
| Metod | Nimani tekshiradi |
|---|---|
isEmpty() | Uzunligi nol |
isBlank() | Bo'sh yoki faqat bo'shliq |
isNotBlank() | Teskarisi |
isNullOrBlank() | null ham, bo'sh ham |
Foydalanuvchi kiritgan ma'lumot uchun isBlank() to'g'riroq: u
faqat probel bosilgan holatni ham tutadi.
Belgilar bo'ylab yurish #
fun main() {
val soz = "dastur"
for (harf in soz) {
print("$harf-")
}
println()
println(soz.count { it == 'a' })
println(soz.filter { it in "aeiou" })
println(soz.map { it.uppercaseChar() }.joinToString(""))
}
d-a-s-t-u-r-
1
au
DASTUR
Bu yerda filter va map ishlatildi - ular kolleksiyalar bo'limida
batafsil ko'riladi, lekin satr ham belgilar ketma-ketligi bo'lgani
uchun ular satrda ham ishlaydi.
Formatlash #
fun main() {
val ball = 87.456
val son = 42
println("%.2f".format(ball))
println("%05d".format(son))
println("%-10s|".format("chap"))
println("%10s|".format("o'ng"))
}
87.46
00042
chap |
o'ng|
- Ism va yoshni shablon bilan bitta qatorda chiqaring.
${}kerak bo'ladigan uchta holat toping.- Narxni
$belgisi bilan chiqaring. - Xom satr bilan uch qatorli xabar yozing va
trimIndent()qo'ying. trimIndent()siz nima bo'lishini ko'ring.- Vergul bilan ajratilgan beshta ismni ro'yxatga bo'ling.
- Ularni
" - "bilan qayta birlashtiring. ==va===farqini o'z misolingizda ko'rsating.- Fayl kengaytmasini katta-kichik harfga qaramay tekshiring.
- Berilgan so'z palindrom ekanini
reversed()bilan aniqlang.
Xulosa #
$nomva${ifoda}- satr shablonlari; qavs ifodalar uchun majburiy.Stringo'zgarmas: metodlar yangi satr qaytaradi.- Uch tirnoqli xom satr hech narsani ekranlashni talab qilmaydi;
trimIndent()bilan birga ishlatiladi. splitro'yxatga bo'ladi,joinToStringqayta yig'adi.- Kotlin da
==mazmunni solishtiradi,===esa havolani - Java dagidan farqli. ignoreCase = truekatta-kichik harfni e'tiborsiz qoldiradi.isBlank()faqat bo'shliqdan iborat satrni ham tutadi.uppercase()valowercase()- yangi nomlar, eskilari o'rniga.
Keyingi bo'limda shartlar va when ni 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.