我试图在运行时根据一组大括号内的内容替换字符串中的值。
// 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"
答案 0 :(得分:3)
您可以将委托传递给采用Regex.Replace
的{{1}}方法,并返回一个字符串,例如定义替换功能:
Match
然后像这样调用它:
string GetValueForFieldNamed(Match m){
string res = m.Groups[1].Value;
//do stuff with res
return res;
}
答案 1 :(得分:1)
您的模式中的1st
Regex组将是您想要的ID
,因此您希望先将其存储在变量中,然后使用您的GetValueForFieldNamed()
函数替换id
1}}返回值:
var match = Regex.Match(account.Company.LinkUrl, @"\{(.*?)\}");
if (match.Success) {
string id = match.Groups[1].Value;
this.LinkUrl = Regex.Replace(account.Company.LinkUrl, String.Format(@"\{({0})\}", id), this.GetValueForFieldNamed(id));
}