Membetulkan Pembuangan Nilai Kosong dalam Pemisahan Rentetan Java
Apabila menggunakan kaedah split() pada Rentetan Java, anda mungkin menghadapi hasil yang tidak dijangka di mana nilai kosong dialih keluar daripada tatasusunan yang terhasil. Ini boleh dilihat dalam contoh berikut:
String data = "5|6|7||8|9||"; String[] split = data.split("\|"); System.out.println(split.length);
Dalam kes ini, anda menjangkakan untuk mendapatkan tatasusunan 8 nilai: [5, 6, 7, EMPTY, 8, 9, EMPTY, EMPTY] . Walau bagaimanapun, hanya 6 nilai dikembalikan.
Sebab bagi kelakuan ini ialah kaedah split() secara lalai mengalih keluar rentetan kosong yang mengekori daripada tatasusunan hasil. Untuk melumpuhkan tingkah laku ini dan memasukkan nilai kosong, anda boleh menggunakan versi terlampau beban split():
String[] split = data.split("\|", -1);
Dengan menetapkan parameter had kepada nilai negatif (-1 dalam kes ini), anda mengarahkan kaedah untuk menggunakan corak seberapa banyak yang mungkin dan memasukkan sebarang rentetan kosong mengekori.
Ini mungkin kerana split(regex) secara dalaman memanggil split(regex, 0), yang mengalih keluar trailing rentetan kosong. Dengan memberikan had negatif, anda melumpuhkan tingkah laku ini dengan berkesan dan memaksa kaedah untuk mengekalkan semua nilai, termasuk yang kosong.
Pengecualian:
Adalah penting untuk ambil perhatian bahawa mengalih keluar mengekori rentetan kosong hanya masuk akal jika ia dicipta oleh proses perpecahan. Untuk String kosong, kerana ia tidak boleh dipisahkan lagi, membelahnya akan menghasilkan tatasusunan dengan satu nilai rentetan kosong. Ini kerana split() tidak melakukan sebarang pemisahan sebenar, jadi rentetan kosong mewakili input asal, bukan rentetan kosong yang dijana oleh operasi pemisahan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghalang Kaedah `split()` Java daripada Mengeluarkan Rentetan Kosong?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!