如何在C#中的RegEx替换操作中使用计算值? [英] How can I use a calculated value in a RegEx replace operation in C#?

查看:63
本文介绍了如何在C#中的RegEx替换操作中使用计算值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种使用c#regex.replace函数在替换表达式中使用匹配组长度的方法.

I'm looking for a way to use the length of a match group in the replace expression with the c# regex.replace function.

也就是说,我可以替换什么???在下面的示例中用来获得所需的输出,如下所示?

That is, what can I replace ??? with in the following example to get the desired output shown below?

示例:

val = Regex.Replace("xxx", @"(?<exes>x{1,6})", "${exes} - ???");

所需的输出

X - 3

注意:这是一个极度设计/简化的示例,用于演示该问题.我意识到在此示例中,使用正则表达式不是实现此目的的理想方法.请相信我,答案的实际应用是一个更复杂问题的一部分,确实需要在此处使用RegEx替换.

Note: This is an extremely contrived/simplified example to demonstrate the question. I realize for this example a regular expression is not the ideal way of doing this. Just trust me that the real world application of the answer is part of a more complex problem that does necessitate the use of a RegEx replace here.

推荐答案

尝试使用 Regex.Replace 版本,该版本调用一个函数来确定替换文本应为:

Try using the version of Regex.Replace that calls a function to determine what the replacement text should be:

public string Replace(string, MatchEvaluator);

http://msdn.microsoft.com/en-us/library/aa332127(VS.71).aspx

然后该函数可以查看匹配的文本(对象作为评估器函数的参数提供),并返回具有正确计算值的字符串.

The function could then look at the matched text (the Match object is supplied as the argument to the evaluator function) and return a string with the proper calculated value.

这篇关于如何在C#中的RegEx替换操作中使用计算值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆