Rumah > Java > javaTutorial > teks badan

Bolehkah Pembatas dikekalkan semasa Pemisahan Rentetan?

Susan Sarandon
Lepaskan: 2024-10-25 02:00:02
asal
325 orang telah melayarinya

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>
Salin selepas log masuk

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]
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan