¿Hay alguna manera de contar la cantidad de reemplazos que hace una llamada Regex.Replace?Count regex reemplaza (C#)
E.g. para Regex.Replace("aaa", "a", "b");
Quiero sacar el número 3 (el resultado es "bbb"
); para Regex.Replace("aaa", "(?<test>aa?)", "${test}b");
Quiero sacar el número 2 (el resultado es "aabab"
).
maneras en que puedo pensar para hacer esto:
- Utilice un MatchEvaluator que se incrementa una variable capturado, haciendo la sustitución manual
- Obtener una MatchCollection e iterar él, haciendo la sustitución manualmente y mantener un recuento
- Buscar primero y obtener un MatchCollection, obtener el recuento de eso, a continuación, hacer sustituir una por separado
Métodos 1 y 2 requieren análisis manual de los $ reemplazar El método 3 requiere que la expresión regular coincida dos veces con la cadena. ¿Hay una mejor manera?
Esto es para una utilidad de línea de comandos simple que podría llamarse con cualquier búsqueda de expresiones regulares y reemplazar patrones como argumentos de línea de comandos. Entonces, idealmente, querría una solución genérica que no asuma el conocimiento del patrón de antemano. Aunque esto es realmente interesante, ¿cuál es la mejor manera de hacerlo en .Net? Parece que el enfoque MatchEvaluator con el análisis manual de $ reemplazos es el camino a seguir, pero es un poco complicado :( –
Simon, mira mi edición. – Chev