在.NET中使用正则表达式替换字符串

时间:2012-03-14 15:11:14

标签: c# .net regex

我正在构建一个通用的正则表达式验证器,它接受一个值进行比较,并返回true或false,判断它是否匹配。验证器与自定义控件绑定,因此输入会自动从属性中检索。我想知道.NET是否在正则表达式中具有字符串替换的语法。我不是说使用Regex.Replace方法,我的意思是使用实际的正则表达式作为用其他东西替换文本的机制。我可以这样做:

return Regex.IsMatch(control.Text, "some regex with replacement logic built in");

更具体地说,我希望我的正则表达式删除所有非数字值,然后确保它在多个字符内。

1 个答案:

答案 0 :(得分:3)

'MatchEvaluator Delegate'可能会对您有所帮助,尽管它没有明确说明您的要求;看看......

Regex.Replace有一个重载,需要MatchEvaluator委托,每个匹配调用一次。这允许您在正则表达式语法不够表达时委托C#代码中替换字符串的内容。例如:

Console.WriteLine(Regex.Replace("5 is less than 10", @"\d+", 
    m => (int.Parse(m.Value) * 10).ToString()));

输出“5小于100”。这可能适用于此,但要求您提供通用替换类型。

我希望这会有所帮助。