Memisahkan Rentetan Java Tanpa Mengalih Keluar Nilai Kosong
Apabila cuba memisahkan rentetan Java menggunakan kaedah split(String regex), seseorang mungkin menjangkakan untuk mengekalkan nilai kosong dalam tatasusunan yang terhasil, terutamanya jika nilai tersebut berada di mana-mana dalam rentetan. Walau bagaimanapun, secara lalai, kaedah pemisahan mengalih keluar nilai kosong mengekor daripada tatasusunan output.
Pertimbangkan kod berikut:
String data = "5|6|7||8|9||"; String[] split = data.split("\|"); System.out.println(split.length);
Dalam contoh ini, kami menjangkakan untuk memperoleh lapan nilai dalam pemisahan tatasusunan, termasuk rentetan kosong: [5, 6, 7, EMPTY, 8, 9, EMPTY, EMPTY]. Walau bagaimanapun, kami tiba-tiba berakhir dengan hanya enam nilai disebabkan oleh pengalihan keluar rentetan kosong yang mengekori secara automatik.
Untuk menyelesaikan isu ini, kami boleh memanfaatkan kaedah pemisahan (String regex, had int) terlampau beban, di mana had ditetapkan kepada nilai negatif. Ini mengarahkan kaedah untuk mengelak daripada mengalih keluar rentetan kosong yang mengekori.
String[] split = data.split("\|", -1);
Dengan menggunakan versi terlampau beban, kami mengatasi gelagat lalai dan mengekalkan semua nilai kosong dalam tatasusunan pisah, tanpa mengira kedudukannya.
Wawasan Tambahan
Adalah penting untuk ambil perhatian bahawa tingkah laku lalai untuk mengalih keluar rentetan kosong mengekori hanya terpakai apabila rentetan kosong tersebut dijana hasil daripada proses pemisahan. Ini bermakna jika rentetan kosong wujud dalam rentetan input asal (cth., "".split(apa-apa sahaja)), ia akan kekal dalam tatasusunan yang terhasil kerana ia tidak diperkenalkan oleh mekanisme pemisahan.
Berbutir ini pemahaman tentang gelagat kaedah split memastikan bahawa pembangun mempunyai kawalan yang lebih besar ke atas kandungan tatasusunan output mereka apabila berurusan dengan nilai yang berpotensi kosong.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memisahkan Rentetan Java dan Menyimpan Semua Nilai Kosong, Termasuk Yang Terikut?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!