Comment obtenir la fonctionnalité de `preg_replace_callback()` de PHP en Java ?

DDD
Libérer: 2024-11-06 17:16:02
original
882 Les gens l'ont consulté

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

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">
  }
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!