Bagaimana untuk Mencapai Fungsi `preg_replace_callback()` PHP dalam Java?

DDD
Lepaskan: 2024-11-06 17:16:02
asal
882 orang telah melayarinya

How to Achieve the Functionality of PHP's `preg_replace_callback()` in Java?

Java Setara dengan preg_replace_callback PHP

Dalam PHP, fungsi preg_replace_callback() menyediakan cara yang mudah untuk mengubah suai rentetan berdasarkan padanan daripada ungkapan biasa. Ia memanggil fungsi yang ditentukan pengguna untuk setiap padanan dan mengembalikan salinan rentetan yang diubah suai. Kefungsian ini amat berguna apabila pengubahsuaian kompleks perlu digunakan pada teks yang dipadankan.

Di Java, walaupun tiada persamaan langsung dengan preg_replace_callback(), kesan yang serupa boleh dicapai menggunakan kelas Pattern dan Matcher. Corak mewakili ungkapan biasa yang disusun, manakala Matcher mewakili contoh tertentu padanan corak dengan teks tertentu. Dengan berulang kali menggunakan kaedah find() pada objek Matcher, semua padanan dalam teks boleh ditemui.

Untuk meniru preg_replace_callback() dalam Java, gelung boleh digunakan untuk memproses setiap padanan secara individu. Dalam gelung, teks yang dipadankan boleh diambil menggunakan kaedah kumpulan() Matcher. Pengubahsuaian tersuai kemudiannya boleh digunakan pada teks yang dipadankan. Teks diubah suai yang terhasil dikumpul ke dalam objek StringBuffer. Akhir sekali, kandungan objek StringBuffer boleh dikembalikan sebagai rentetan yang diubah suai.

Berikut ialah contoh yang menunjukkan cara untuk mencapai kefungsian preg_replace_callback() dalam Java:

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.StringBuffer;

class Main {
  public static void main(String[] args) {
    String subjectString = "[thumb1][thumb2]";
    Pattern regex = Pattern.compile("\[thumb(\d+)\]");
    Matcher regexMatcher = regex.matcher(subjectString);

    StringBuffer resultString = new StringBuffer();

    while (regexMatcher.find()) {
      // Custom modification based on the match
      String replacement = "<img src=\"thumbs/" + Integer.parseInt(regexMatcher.group(1)) + "\">";
      regexMatcher.appendReplacement(resultString, replacement);
    }

    regexMatcher.appendTail(resultString);

    System.out.println(resultString); // prints <img src="thumbs/1"> <img src="thumbs/2">
  }
}
Salin selepas log masuk

Dalam ini contoh, subjectString mengandungi dua padanan untuk ungkapan biasa, [thumbd ]. Gelung berulang pada setiap padanan, mendapatkan semula digit yang dipadankan, dan kemudian menggantikan teks yang dipadankan dengan penggantian tersuai. Teks yang diubah suai dikumpul ke dalam pembolehubah resultString. Akhirnya, kandungan resultString dikembalikan sebagai rentetan yang diubah suai.

Dengan menggunakan kaedah appendReplacement() dan appendTail() kelas Matcher, kesan yang serupa dengan preg_replace_callback() PHP boleh dicapai dalam Java. Walaupun ia mungkin tidak ringkas seperti fungsi PHP, pendekatan ini memberikan fleksibiliti dan kawalan ke atas proses pengubahsuaian, menjadikannya sesuai untuk tugas manipulasi rentetan yang kompleks.

Atas ialah kandungan terperinci Bagaimana untuk Mencapai Fungsi `preg_replace_callback()` PHP dalam Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!