Java Équivalent à preg_replace_callback de PHP
En PHP, la fonction preg_replace_callback() fournit un moyen pratique de modifier une chaîne en fonction des correspondances d'un expression régulière. Il appelle une fonction définie par l'utilisateur pour chaque correspondance et renvoie une copie modifiée de la chaîne. Cette fonctionnalité est particulièrement utile lorsque des modifications complexes doivent être appliquées au texte correspondant.
En Java, bien qu'il n'y ait pas d'équivalent direct à preg_replace_callback(), un effet similaire peut être obtenu en utilisant les classes Pattern et Matcher. Pattern représente l'expression régulière compilée, tandis que Matcher représente une instance spécifique de mise en correspondance du modèle avec un texte donné. En appelant à plusieurs reprises la méthode find() sur l'objet Matcher, toutes les correspondances dans le texte peuvent être trouvées.
Pour émuler preg_replace_callback() en Java, une boucle peut être utilisée pour traiter chaque correspondance individuellement. Dans la boucle, le texte correspondant peut être récupéré à l’aide de la méthode group() de Matcher. Des modifications personnalisées peuvent ensuite être appliquées au texte correspondant. Le texte modifié résultant est accumulé dans un objet StringBuffer. Enfin, le contenu de l'objet StringBuffer peut être renvoyé sous forme de chaîne modifiée.
Voici un exemple qui montre comment obtenir la fonctionnalité de preg_replace_callback() en 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"> } }
Dans ce Par exemple, subjectString contient deux correspondances pour l'expression régulière, [thumbd ]. La boucle parcourt chaque correspondance, récupère le chiffre correspondant, puis remplace le texte correspondant par un remplacement personnalisé. Le texte modifié est accumulé dans la variable resultString. Enfin, le contenu de resultString est renvoyé sous forme de chaîne modifiée.
En utilisant les méthodes appendReplacement() et appendTail() de la classe Matcher, un effet similaire à celui de PHP preg_replace_callback() peut être obtenu en Java. Bien qu'elle ne soit pas aussi concise que la fonction PHP, cette approche offre flexibilité et contrôle sur le processus de modification, ce qui la rend adaptée aux tâches complexes de manipulation de chaînes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!