【问题标题】:Replacing Regex matches using lambda expression使用 lambda 表达式替换正则表达式匹配
【发布时间】:2015-07-09 19:21:16
【问题描述】:

我正在寻找一个简单的正则表达式查找和替换解决方案,如果我可以提供一个 lambda 表达式来替换每个匹配项。例如:

regex.MatchReplace(text, match => "replacement string");

这样我可以创建自己的逻辑来生成替换字符串,这可能涉及调用各种方法等,即你不能用替换模式做的事情。有谁知道我怎么能做到这一点?

【问题讨论】:

  • Regex 已经有ReplaceMatchEvaluator 的重载。为什么需要自己的? regex.Replace(text, match => "replacement string"); 应该适合你。
  • 谢谢。不知道我是如何设法忽略这一点的。

标签: c# regex lambda substitution


【解决方案1】:

Regex 已经有一个。例如,

string input="abc123def";
var output = Regex.Replace(input, @"\d", m=>(m.Value[0]-'0'+ 5).ToString());
Console.WriteLine(output);

输出:abc678def

【讨论】:

    【解决方案2】:

    请看以下内容:

    https://msdn.microsoft.com/en-GB/library/bb383977.aspx

    您可以为 RegEx 类定义一个扩展方法,该方法允许您指定 Action<> 作为参数。

    【讨论】:

    • 抱歉不清楚,但我正在寻找扩展方法的实际实现。
    • 恐怕我手头没有例子。你自己尝试过吗?如果您发布现有解决方案,您更有可能得到答案。
    • 我有一个正在开发的解决方案 - 它涉及匹配两次 - 一次存储所有匹配项,另一个进行替换。我想也许对于这样一个基本的操作,会有可用的高性能解决方案。
    猜你喜欢
    • 2012-05-16
    • 2015-11-30
    • 1970-01-01
    • 2013-12-06
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多