2012-06-15 14 views
6

He estado trabajando con un problema y cualquier ayuda sería apreciada.C# Regex - Igualar y reemplazar, Incremento automático

Problema: Tengo un párrafo y deseo reemplazar una variable que aparece varias veces (Variable = @Variable). Esta es la parte fácil, pero la parte que estoy teniendo dificultades es tratar de reemplazar la variable con diferentes valores.

Necesito que cada aparición tenga un valor diferente. Por ejemplo, tengo una función que hace un cálculo para cada variable. Lo que tengo hasta el momento es el siguiente:

private string SetVariables(string input, string pattern){ 

    Regex rx = new Regex(pattern); 
    MatchCollection matches = rx.Matches(input); 
    int i = 1; 
    if(matches.Count > 0) 
    { 
     foreach(Match match in matches) 
     { 
      rx.Replace(match.ToString(), getReplacementNumber(i)); 
      i++ 
     } 
    } 

soy capaz de reemplazar cada variable que necesito con el número de regresar de getReplacementNumber función de (i), sino cómo lo puse de nuevo en mi entrada original con el valores reemplazados, en el mismo orden que se encuentra en la colección de coincidencias?

¡Gracias de antemano!

Marcus

+0

¿Cuál es el tipo de retorno de 'getReplacementNumber (i)'? –

Respuesta

8

Uso la sobrecarga de Replace que toma un MatchEvaluator como su segundo parámetro.

string result = rx.Replace(input, match => { return getReplacementNumber(i++); }); 

Asumo aquí que getReplacementNumber(int i) devuelve un string. De lo contrario, deberá convertir el resultado en una cadena.

ver su funcionamiento en línea: ideone

+0

¡Funcionó como un amuleto! Gracias por tu ayuda. ¡Lo aprecio mucho! –

Cuestiones relacionadas