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.

🕑 15 daqiqa o‘qish 📄 593 so‘z 👁 0 marta ko‘rilgan
Ushbu bo‘lim mundarijasi
  1. Shablonlar
  2. Dollar belgisining o'zi kerak bo'lsa
  3. Asosiy metodlar
  4. Satr o'zgarmas
  5. Xom satrlar
  6. Bo'shliqlarni tozalash
  7. Bo'lish va birlashtirish
  8. Solishtirish
  9. Tekshirish va tekislash
  10. Bo'shlikni tekshirish
  11. Belgilar bo'ylab yurish
  12. Formatlash
  13. Xulosa

String - matn saqlaydigan tur. Kotlin da u juda qulay: shablonlar, xom satrlar va o'nlab tayyor metodlar bor.

Shablonlar #

KOTLIN
fun main() {
    val ism = "Nodira"
    val ball = 88

    println("Talaba: $ism")
    println("Ball: $ball")
    println("Keyingi ball: ${ball + 5}")
    println("Ism uzunligi: ${ism.length}")
}
Natija
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 #

KOTLIN
fun main() {
    val narx = 25
    println("Narxi: \$$narx")
    println("${'$'}{bu shablon emas}")
}
Natija
Narxi: $25
${bu shablon emas}

\$ - ekranlangan dollar. Ikkinchi usul biroz g'alati ko'rinadi, lekin xom satrlarda zarur bo'ladi.

Asosiy metodlar #

KOTLIN
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())
}
Natija
8
NAMANGAN
namangan
Nama
true
2
N
n
nagnamaN
MetodNima qiladi
lengthBelgilar 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.

toUpperCase emas, uppercase

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 #

KOTLIN
fun main() {
    val matn = "salom"
    matn.uppercase()
    println(matn)

    val yangi = matn.uppercase()
    println(yangi)
}
Natija
salom
SALOM

String metodlari asl satrni o'zgartirmaydi - yangi satr qaytaradi. Natijani o'zlashtirmasangiz, u tashlab yuboriladi.

Xom satrlar #

KOTLIN
fun main() {
    val xabar = """
        Hurmatli talaba,

        Imtihon 15-sentabrda bo'ladi.
        Vaqt: 10:00
    """.trimIndent()

    println(xabar)
}
Natija
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.

KOTLIN
fun main() {
    val yol = """C:\Users\Husanboy\hujjatlar"""
    val json = """{"ism": "Malika", "ball": 88}"""

    println(yol)
    println(json)
}
Natija
C:\Users\Husanboy\hujjatlar
{"ism": "Malika", "ball": 88}

Windows yo'llari va JSON uchun juda qulay - hech narsani ekranlash kerak emas.

Bo'shliqlarni tozalash #

KOTLIN
fun main() {
    val kirish = "   Husanboy   "

    println("[$kirish]")
    println("[${kirish.trim()}]")
    println("[${kirish.trimStart()}]")
    println("[${kirish.trimEnd()}]")
}
Natija
[   Husanboy   ]
[Husanboy]
[Husanboy   ]
[   Husanboy]

Foydalanuvchi kiritgan matnni doim trim() qiling.

Bo'lish va birlashtirish #

KOTLIN
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 "))
}
Natija
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 #

KOTLIN
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))
}
Natija
true
true
false
true
Kotlin da == satrlar uchun to'g'ri ishlaydi

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 #

KOTLIN
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))
}
Natija
true
true
false
true
Olma        12000
000042
--------------------

Bo'shlikni tekshirish #

KOTLIN
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())
}
Natija
true
false
true
true
true
MetodNimani 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 #

KOTLIN
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(""))
}
Natija
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 #

KOTLIN
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"))
}
Natija
87.46
00042
chap      |
      o'ng|
Amaliy topshiriq
  1. Ism va yoshni shablon bilan bitta qatorda chiqaring.
  2. ${} kerak bo'ladigan uchta holat toping.
  3. Narxni $ belgisi bilan chiqaring.
  4. Xom satr bilan uch qatorli xabar yozing va trimIndent() qo'ying.
  5. trimIndent() siz nima bo'lishini ko'ring.
  6. Vergul bilan ajratilgan beshta ismni ro'yxatga bo'ling.
  7. Ularni " - " bilan qayta birlashtiring.
  8. == va === farqini o'z misolingizda ko'rsating.
  9. Fayl kengaytmasini katta-kichik harfga qaramay tekshiring.
  10. Berilgan so'z palindrom ekanini reversed() bilan aniqlang.

Xulosa #

  • $nom va ${ifoda} - satr shablonlari; qavs ifodalar uchun majburiy.
  • String o'zgarmas: metodlar yangi satr qaytaradi.
  • Uch tirnoqli xom satr hech narsani ekranlashni talab qilmaydi; trimIndent() bilan birga ishlatiladi.
  • split ro'yxatga bo'ladi, joinToString qayta yig'adi.
  • Kotlin da == mazmunni solishtiradi, === esa havolani - Java dagidan farqli.
  • ignoreCase = true katta-kichik harfni e'tiborsiz qoldiradi.
  • isBlank() faqat bo'shliqdan iborat satrni ham tutadi.
  • uppercase() va lowercase() - yangi nomlar, eskilari o'rniga.

Keyingi bo'limda shartlar va when ni o'rganamiz.

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.