Memisahkan Rentetan dengan Pembatas Dipelihara
Apabila bekerja dengan rentetan berbilang baris yang dihadkan oleh satu set pembatas unik, sukar untuk memisahkan rentetan sementara juga memelihara pembatas itu sendiri. Kaedah String.split standard hanya mengasingkan rentetan berdasarkan pembatas yang ditentukan, membuang aksara pembatas.
Menggunakan Lookahead dan Look Behind
Java Development Kit (JDK) menyediakan penyelesaian menggunakan pandangan ke hadapan dan ke belakang, yang merupakan ciri ungkapan biasa yang membolehkan anda memadankan dan menangkap aksara tanpa memasukkannya dalam hasil akhir.
Berikut ialah contoh menggunakan pandangan ke hadapan dan pandang belakang:
<code class="java">String input = "(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)"; String[] splitWithDelimiter = input.split("((?<=;)|(?=;))"); System.out.println(Arrays.toString(splitWithDelimiter));</code>
Corak:
Output:
[Text1, ;, DelimiterA, ;, Text2, ;, DelimiterC, ;, Text3, ;, DelimiterB, ;, Text4]
Hasil ini mengekalkan pembatas bersama-sama teks, memenuhi keperluan untuk mengekalkan pembatas utuh sambil membelah rentetan.
Meningkatkan Kebolehbacaan
Ekspresi biasa kadangkala sukar dibaca dan difahami. Untuk meningkatkan kebolehbacaan, anda boleh mencipta pembolehubah dengan nama deskriptif yang mewakili corak ungkapan biasa. Contohnya:
<code class="java">static final String WITH_DELIMITER = "((?<=%1$s)|(?=%1$s))"; public void someMethod() { final String[] splitResults = input.split(String.format(WITH_DELIMITER, ";")); }</code>
Dengan menggunakan ruang letak dan String.format Java, anda boleh menjadikan ungkapan biasa lebih intuitif dan lebih mudah untuk ditafsirkan.
Atas ialah kandungan terperinci Bagaimana untuk Memisahkan Rentetan dengan Pembatas yang Dipelihara Menggunakan Java Lookahead dan Lookahead?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!