Rumah  >  Artikel  >  Java  >  Bolehkah Pembatas dikekalkan semasa Pemisahan Rentetan?

Bolehkah Pembatas dikekalkan semasa Pemisahan Rentetan?

Susan Sarandon
Susan Sarandonasal
2024-10-25 02:00:02243semak imbas

Can Delimiters be Retained during String Splitting?

Mengekalkan Pembatas semasa Pemisahan Rentetan

Apabila bekerja dengan rentetan berbilang baris yang dipisahkan oleh satu set pembatas, tugas biasa ialah membahagikannya kepada bahagian individu. Biasanya, kaedah String.split digunakan untuk tujuan ini. Walau bagaimanapun, pendekatan ini mengetepikan pembatas daripada hasil.

Menggunakan Pandang Ke Depan dan Belakang

Untuk mengekalkan pembatas semasa pemisahan, konsep pandang ke hadapan dan pandang belakang dalam ungkapan biasa boleh digunakan.

Pertimbangkan kod berikut:

<code class="java">System.out.println(Arrays.toString("a;b;c;d".split("(?<=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("(?=;)")));
System.out.println(Arrays.toString("a;b;c;d".split("((?<=;)|(?=;))")));</code>

Kod ini menggunakan pandangan ke hadapan dan ke belakang untuk memeriksa rentetan. Khususnya, (?<=;) sepadan dengan rentetan kosong yang serta-merta mendahului koma bertitik (;) dan (?=;) sepadan dengan rentetan kosong yang serta-merta mengikuti koma bertitik.

Baris akhir, yang membelah pada ((?<=;)|(?=;)), dengan cekap memisahkan rentetan kepada kedua-dua teks dan komponen pembatas:

[a;, b;, c;, d]
[a, ;b, ;c, ;d]
[a, ;, b, ;, c, ;, d]

Dalam hasil yang diingini, baris ketiga menangkap keperluan yang tepat, di mana setiap segmen teks diikuti oleh pembatas yang sepadan.

Meningkatkan Kebolehbacaan dengan Pembolehubah

Untuk meningkatkan kebolehbacaan ungkapan biasa, pertimbangkan untuk mencipta pembolehubah yang mewakili fungsinya. Sebagai contoh, kod berikut menggunakan pembolehubah WITH_DELIMITER untuk menentukan pembatas:

<code class="java">static public final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))";

public void someMethod() {
    final String[] aEach = "a;b;c;d".split(String.format(WITH_DELIMITER, ";"));
    ...
}</code>

Teknik ini membantu menjelaskan maksud ungkapan biasa.

Atas ialah kandungan terperinci Bolehkah Pembatas dikekalkan semasa Pemisahan Rentetan?. 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