C# C语言中替换为字符串的变量#

C# C语言中替换为字符串的变量#,c#,regex,C#,Regex,我有字符串格式 “某些文本%1%-%2%blablabla%15%” 和类变量的集合: public class Variable { public long Id { get; set; } public string Value { get; set; } } 如何使用Regex.replace方法或类似方法,用ID等于{ID Number}(例如用ID=1的变量值字段替换“%1%”)的变量值字段替换所有子字符串,如“{ID Number}%” 在.Net中没有内置的功

我有字符串格式

“某些文本%1%-%2%blablabla%15%”

和类变量的集合:

public class Variable
{
     public long Id { get; set; }
     public string Value { get; set; }
}

如何使用
Regex.replace
方法或类似方法,用
ID
等于
{ID Number}
(例如用ID=1的变量值字段替换
“%1%”
)的变量值字段替换所有子字符串,如
“{ID Number}%”

在.Net中没有内置的功能可以实现这一点,但是有几种实现这种功能的方法


看看他在哪里探索了几个实现。这篇博文是2009年的,但是代码应该仍然很有用:-)

您可以使用自己的匹配计算器。这是未经测试的,但解决方案应类似于以下代码:

String processed = Regex.Replace (rawInput, @"%(\d+)%", MyMatchEvaluator);

private string MyMatchEvaluator (Match match)
{
    int id = int.Parse (match.Captures[0].Value);
    return _variables.Where(x => x.Id == id).Value;
}
其中
\u variables
是您的变量集合,而
rawInput
是您的输入字符串。

类似的内容

var data = new List<Variable>
{
    new Variable{Id = 1,Value = "value1"},
    new Variable{Id = 2, Value = "value2"}

};

var sb = new StringBuilder("sometext%1%-%2%blablabla%15%");

foreach (Variable t in data)
{
    string oldString = String.Format("%{0}%", t.Id);
    sb.Replace(oldString, t.Value);
}

//sometextvalue1-value2blablabla%15%
string output = sb.ToString();
var数据=新列表
{
新变量{Id=1,Value=“value1”},
新变量{Id=2,Value=“value2”}
};
var sb=新的StringBuilder(“sometext%1%-%2%bla%15%”;
foreach(数据中的变量t)
{
string oldString=string.Format(“%{0}%”,t.Id);
sb.替换(旧字符串,t.值);
}
//sometextvalue1-Value2BLABLA%15%
字符串输出=sb.ToString();

我会使用first Regex.Match来获取一个数字的所有出现(使用[\d]+或类似的东西)。然后,这取决于您如何存储这些变量实例。2个小修复:使用Single而不是Where,我们已经从match.Captures[0]中删除了所有“%”符号