Rumah >Java >javaTutorial >Mengapa Java 8 Mengubah Gelagat `String.split()`, dan Bagaimana Saya Boleh Mengekalkan Keserasian?

Mengapa Java 8 Mengubah Gelagat `String.split()`, dan Bagaimana Saya Boleh Mengekalkan Keserasian?

Susan Sarandon
Susan Sarandonasal
2024-12-21 02:29:13531semak imbas

Why Did Java 8 Change the Behavior of `String.split()`, and How Can I Maintain Compatibility?

Menyingkap Percanggahan Split dalam Java 8

Latar Belakang:
Sebelum Java 8, String. kaedah split akan secara konsisten memasukkan rentetan kosong yang mendahului dan mengekori dalam tatasusunan hasilnya. Walau bagaimanapun, tingkah laku ini berubah dalam Java 8. Artikel ini menyelidiki sebab di sebalik perubahan ini dan menyediakan strategi untuk mengekalkan keserasian merentas versi Java.

Anjakan Corak dalam Java 8:
Java 8 memperkenalkan tweak kepada dokumentasi kedua-dua String.split dan Pattern.split. Klausa baharu telah ditambah, menyatakan bahawa subrentetan utama kosong hanya akan disertakan dalam tatasusunan hasil jika terdapat padanan lebar positif pada permulaan jujukan input. Padanan lebar sifar pada permulaan input, sebaliknya, tidak akan menghasilkan subrentetan utama kosong.

Perbandingan Kod:
Membandingkan kod pelaksanaan rujukan untuk Corak .split dalam Java 7 dan Java 8 mendedahkan pengenalan pernyataan bersyarat dalam Java 8. Pernyataan ini menyemak sama ada padanan pada permulaan jujukan input mempunyai lebar sifar dan jika ya, kecualikannya daripada hasilnya.

// Code added in 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;
}

Memelihara Keserasian:
Untuk mengekalkan konsistensi merentas versi Java dan mengekalkan tingkah laku Java 8, pengguna boleh mengikuti perkara berikut langkah:

  • Jika ungkapan biasa boleh memadankan rentetan sifar panjang, kelilingi dengan bukan tangkapan kurungan dan tambahkan (?!A) ke penghujung.
  • Jika ungkapan biasa tidak dapat sepadan dengan rentetan panjang sifar, tiada tindakan diperlukan.
  • Jika tidak diketahui sama ada ungkapan biasa boleh sepadan rentetan panjang sifar, gabungkan kedua-dua langkah 1 dan 2.

Dengan mengikuti garis panduan ini, pembangun boleh memastikan bahawa tingkah laku String.split kekal konsisten dan boleh diramal merentas versi Java.

Atas ialah kandungan terperinci Mengapa Java 8 Mengubah Gelagat `String.split()`, dan Bagaimana Saya Boleh Mengekalkan Keserasian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn