c# - 将 Regex 结果传递给函数

标签 c#

我正在尝试根据一组大括号中的内容在运行时替换字符串中的值。

// this.LinkUrl = "/accounts/{accountId}"
this.LinkUrl = Regex.Replace(account.Company.LinkUrl, @"\{(.*?)\}", "$1");
// this.LinkUrl = "/accounts/accountId"

到目前为止,它按预期工作并删除了大括号。但是我怎样才能将 $1 值传递给函数,就像这样

this.LinkUrl = Regex.Replace(account.Company.LinkUrl, @"\{(.*?)\}", this.GetValueForFieldNamed("$1"));

所以“accountid”被替换为函数返回的值?例如“/账户/56”

最佳答案

您可以将委托(delegate)传递给 Regex.Replace 方法,该方法采用 Match 并返回一个字符串,例如定义替换函数:

string GetValueForFieldNamed(Match m){
    string res = m.Groups[1].Value;
    //do stuff with res
    return res;
}

然后这样调用它:

LinkUrl = Regex.Replace(account.Company.LinkUrl, @"\{(.*?)\}", GetValueForFieldNamed);

关于c# - 将 Regex 结果传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11846528/

相关文章:

c# - 用小数格式化字符串

c# - 从 ssl 上的浏览​​器访问在本地主机上运行的 SignalR 应用程序

c# - Xamarin - NavigationPage.TitleView 内的 StackLayout 不会使用所有空间吗?

c# - C++ 中的嵌入式 Mono 启动 C# ServiceBase

c# - 在 winform 中隐藏/显示 2 个表单

c# - ASP.NET 在捆绑中使用嵌入式资源

c# - 两个列表同步

c# - 如何按 IEnumerable 属性中的值分组

c# - MVC 中的 OAuth 2.0 Mailkit "Authentication failed",但 C# 控制台应用程序工作正常

c# - asp.net 核心 Razor 页面 'loading indicator'