Perbandingan Rentetan di Kotlin

1. Gambaran keseluruhan

Dalam tutorial ini, kita akan membincangkan pelbagai cara membandingkan String s di Kotlin.

2. Pengendali Perbandingan

Mari mulakan dengan pengendali “==”.

Kita boleh menggunakannya untuk memeriksa sama ada dua tali sama strukturnya. Ini setara dengan menggunakan kaedah sama di Java :

val first = "kotlin" val second = "kotlin" val firstCapitalized = "KOTLIN" assertTrue { first == second } assertFalse { first == firstCapitalized }

Sekarang, mari kita pertimbangkan pengendali persamaan referensi “===”. Ia kembali benar jika kedua-dua pemboleh ubah tersebut menunjuk ke objek yang sama. Ia setara dengan menggunakan == di Java .

Setiap kali kita menginisialisasi objek String baru dengan menggunakan tanda kutip, objek tersebut secara automatik diletakkan di kumpulan tali. Oleh itu, dua tali yang sama yang dibuat dengan cara itu akan selalu merujuk objek yang sama:

assertTrue { first === second }

Namun, jika kita menggunakan konstruktor untuk membuat String baru , kita secara jelas memberitahu Kotlin bahawa kita mahukan objek baru. Akibatnya, String baru akan dibuat dan diletakkan di atas timbunan:

val third = String("kotlin".toCharArray()) assertTrue { first == third } assertFalse { first === third }

3. Membandingkan dengan sama

Yang sama dengan kaedah pulangan hasil yang sama seperti "==" pengendali:

assertTrue { first.equals(second) } assertFalse { first.equals(firstCapitalized) }

Apabila kita ingin melakukan perbandingan kes-sensitif, kita boleh menggunakan sama kaedah dan lulus benar untuk parameter pilihan kedua ignoreCase :

assertTrue { first.equals(firstCapitalized, true) }

4. Membandingkan dengan membandingkanTo

Kotlin juga mempunyai kaedah membandingkanTo yang dapat kita gunakan untuk membandingkan susunan dua tali. Sama seperti kaedah sama , kaedah membandingkanTo juga dilengkapi dengan argumen ignease case pilihan :

assertTrue { first.compareTo(second) == 0 } assertTrue { first.compareTo(firstCapitalized) == 32 } assertTrue { firstCapitalized.compareTo(first) == -32 } assertTrue { first.compareTo(firstCapitalized, true) == 0 }

The compareTo kaedah pulangan sifar untuk tali yang sama, nilai positif jika nilai ASCII hujah adalah lebih kecil, dan nilai negatif jika nilai ASCII hujah adalah lebih besar. Dengan cara tertentu, kita dapat membacanya seperti kita membaca pengurangan.

Dalam contoh terakhir, kerana argumen ignease , kedua-dua rentetan dianggap sama .

5. Kesimpulan

Dalam artikel ringkas ini, kami melihat pelbagai cara membandingkan rentetan di Kotlin menggunakan beberapa contoh asas.

Seperti biasa, sila periksa semua kod di GitHub.