【问题标题】:Replacing strings using regex in .NET在 .NET 中使用正则表达式替换字符串
【发布时间】:2012-03-14 15:11:13
【问题描述】:

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

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

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

【问题讨论】:

  • 您是用某些东西替换非数字值还是只是删除它们?
  • 听起来你想要一个单行,但问题是你需要两行。如果您可以首先使用 regex.replace 删除非数字字符,然后在“所有数字字符?”上运行匹配,这似乎不会太糟糕。表达。不过,您可能可以将您的 UI 切换为使用蒙版文本框并省去很多麻烦。
  • 只需两步。先清理control.Text,再匹配。

标签: c# .net regex


【解决方案1】:

“MatchEvaluator 代表”可能会在这方面为您提供帮助,尽管这不是您明确要求的;看看...

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

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

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

我希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-26
    • 2015-02-27
    • 1970-01-01
    • 2018-07-13
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多