Je cherche un moyen d'utiliser la longueur d'un groupe de match dans l'expression de remplacement avec la fonction C # Regex.replace.
c'est-à-dire que puis-je remplacer ??? Avec dans l'exemple suivant, pour obtenir la sortie souhaitée ci-dessous? p>
Note: strong> Il s'agit d'un exemple extrêmement artificiel / simplifié pour démontrer la question. Je me rends compte pour cet exemple une expression régulière n'est pas la façon idéale de le faire. Faites-moi simplement confiance que l'application du monde réel de la réponse fait partie d'un problème plus complexe qui nécessite l'utilisation d'une regex remplacer ici. P> p>
3 Réponses :
Essayez d'utiliser la version de http://msdn.microsoft.com/en-us/library/aa332127 (vs.71) .aspx p> La fonction pourrait alors regarder le texte correspondant (l'objet code> code> est fourni comme argument à la fonction d'évaluateur) et renvoie une chaîne avec le bon Valeur calculée. P> p> Regex.replace CODE> qui appelle une fonction pour déterminer ce que le texte de remplacement doit être le suivant:
Merci. Je pensais que j'avais besoin de faire ça, mais avant de descendre cette route, je voulais juste voir s'il y avait un mot-clé reconnu par Remplacer pour rendre cette opération plus simple. Néanmoins, vous avez mon uppote et si personne ne répond avec une manière abrégée pour accomplir cela, je vais accepter cette réponse.
Essayez avec l'exemple de matchvaluator ci-dessous p> (partiellement volé du livre de recettes d'expressions ordinaires - ma Bible haha) < / p> p>
Si vous utilisez C # 3, vous pouvez simplement créer un matchValuator à partir d'une expression Lambda: in c # 2, vous pouvez utiliser un délégué: p>
En C # 4 au moins Création d'un Nouveau Matchevaluator code> n'est pas nécessaire, l'expression Lambda peut être utilisée directement.
String val = regex.replace ("xxx", @ "(?