我的格式是字符串
“sometext%1% - %2%blablabla%15%”
和类变量的集合:
public class Variable
{
public long Id { get; set; }
public string Value { get; set; }
}
如何将"%{ID Number}%"
之类的所有子字符串替换为Id
等于{ID Number}
的变量值字段(例如,将"%1%"
替换为ID = 1的变量值字段)使用Regex.Replace
方法或类似的东西?
答案 0 :(得分:4)
您可以使用自己的匹配评估程序。这是未经测试的,但解决方案看起来应与此代码类似:
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;
}
_variables
是您的变量集合,rawInput
是您的输入字符串。
答案 1 :(得分:3)
这样的东西?
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();
答案 2 :(得分:0)
.Net中没有内置任何功能,但这种功能有多种实现方式。
查看this blog post by Phil Haack他在哪里探索了几个实现。博客帖子是从2009年开始的,但代码应该仍然可用: - )