Normalmente termino con muchas condiciones y/o bucles para analizar una expresión regular e interpolar los valores en sus grupos de captura, y estoy buscando respuestas con experiencia para resolver este problema con suerte de una manera simple.¿Forma más sencilla de construir una cadena mediante la interpolación de valores en un patrón Regex?
Por ejemplo, dado un patrón de expresión regular como X(?<xid>\d+)-(?<xsub>\w+)\.xml
que tiene los grupos de captura con nombre "XID" y "XSUB", destinados para que coincida con los nombres de archivo como: X1-foo.xml, X555-bar.xml, etc., cuando se les proporciona los argumentos: int xid=999, string xsub="baz"
, quiero para interpolar los valores en los grupos de patrones para construir el nombre de archivo correcto: X999-baz.xml
que sea sencillo, capturas explícitas no están anidados.
Sin String.Format:
Este concepto se logra fácilmente con elementos de formato .NET cadena como String.Format("X{0}-{1}.xml", xid, xsub)
sin embargo, ya tienen un patrón de expresión regular para analizar fuera de esos valores de cualquier cadena de nombre de archivo y quieren para usar el mismo patrón para ir en la dirección opuesta reconstruyendo un nombre de archivo con él, para mayor precisión. Si requiero un patrón de expresiones regulares para analizar valores de una cadena, pero una cadena con elementos de formato para reconstruir el nombre de archivo, se requieren dos tipos de sintaxis distintas, lo que crea una mayor probabilidad de error manual al escribirlas: es demasiado fácil cree erróneamente una cadena de elemento de formato incorrecto que no reconstruya correctamente el resultado de una coincidencia de patrón de expresión regular, o viceversa.
En esta situación, la expresión regular es de hecho la 'entrada'. – BoltClock