La cadena de entrada es algo como esto:Cómo expresiones regulares sustituir el punto grupo partido con el resultado del método
Línea: 50
LineB: 120
Línea: 12
LineB: 53
Me gustaría reemplazar los valores LineB con un resultado de MultiplyCalculatorMethod(LineAValue)
, donde LineAValue
es el valor de la línea anterior LineB
y MultiplyCalculatorMethod
es mi otro método complicado de C#.
En semi-código, me gustaría hacer algo como esto:
int MultiplyCalculatorMethod(int value)
{
return 2 * Math.Max(3,value);
}
string ReplaceValues(string Input)
{
Matches mat = Regex.Match(LineA:input_value\r\nLineB:output_value)
foreach (Match m in mat)
{
m.output_value = MultiplyCalculatorMethod(m.input_value)
}
return m.OutputText;
}
Example:
string Text = "LineA:5\r\nLineB:2\r\nLineA:2\r\nLineB:7";
string Result = ReplaceValues(Text);
//Result = "LineA:5\r\nLineB:10\r\nLineA:2\r\nLineB:6";
me escribió una Regex.Match
para que coincida con LineA: value\r\nLineB: value
y obtener estos valores en grupos. Pero cuando uso Regex.Replace
, solo puedo proporcionar un resultado "estático" que combine grupos de la coincidencia, pero no puedo usar los métodos C# allí.
Así que mi pregunta es cómo Regex.Replace donde el resultado es un resultado del método C# donde la entrada es el valor LineA.
@tomaszs: no está del todo claro para mí. Quizás sea útil proporcionar las cadenas de resultados que esperaría para las cadenas de entrada dadas. –
He añadido un ejemplo –