Rumah >Java >javaTutorial >Mengapakah String.split() Java 8 Mengendalikan Pembatas Kosong Berbeza Daripada Versi Sebelumnya?
Mengapa di Java 8 Split Kadangkala Mengalih Keluar Rentetan Kosong pada Permulaan Susunan Hasil?
Dalam Java 7 dan sebelumnya, membelah rentetan menggunakan pembatas kosong ("") akan menghasilkan tatasusunan yang mengandungi rentetan kosong di hadapan dan di belakang. Tingkah laku ini berubah dalam Java 8.
Gelagat Java 8
Dalam Java 8, belah pada pembatas kosong tidak lagi menyertakan rentetan kosong terkemuka dalam tatasusunan hasil. Walau bagaimanapun, ia masih mengalih keluar rentetan kosong yang tertinggal. Ini disebabkan oleh perubahan dalam pelaksanaan String.split dan Pattern.split.
Pelaksanaan Rujukan
Membandingkan pelaksanaan rujukan Pattern.split dalam Java 7 dan Java 8, kami dapati penambahan berikut dalam Java 8:
if (index == 0 && index == m.start() && m.start() == m.end()) { // no empty leading substring included for zero-width match // at the beginning of the input char sequence. continue; }
Kod ini tidak termasuk padanan panjang sifar pada permulaan rentetan input daripada tatasusunan hasil.
Mengekalkan Keserasian
Mengikuti Kelakuan Java 8 (Keserasian Ke Hadapan)
Untuk memastikan tingkah laku yang konsisten merentas versi Java, ubah suai ungkapan biasa anda sebagai berikut:
Mengikuti Kelakuan Java 7 (Keserasian Ke Belakang)
Tiada penyelesaian umum untuk keserasian ke belakang dengan Java 7 atau sebelumnya. Pelaksanaan tersuai bagi pemisahan mungkin diperlukan.
Atas ialah kandungan terperinci Mengapakah String.split() Java 8 Mengendalikan Pembatas Kosong Berbeza Daripada Versi Sebelumnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!