我想在运行时基于一组花括号内的内容替换字符串中的值。将正则表达式结果传递给函数
// 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”
非常好,不得不从{m.Groups [1] .Value'中删除{},但除此之外它效果很好。 – JConstantine 2012-08-07 13:34:46
这有点奇怪,因为这在我的机器上运行良好。你使用相同的正则表达式吗?如果我调用'Regex.Replace(“/ accounts/{accountId}”,@“\ {(。*?)\}”,GetValueForFieldNamed)',那么在'GetValueForFieldNamed'里面我有'm.Groups [0] .Value ==“{accountID}”',但是'm.Groups [1] .Value ==“accountID”'。 – Jan 2012-08-07 13:46:21
这是我的错误,我使用索引0而不是1.出于好奇,为什么它会给出2个结果? – JConstantine 2012-08-07 14:05:16