变量在C#中替换为字符串

时间:2012-01-05 13:35:37

标签: c# regex

我的格式是字符串

  

“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方法或类似的东西?

3 个答案:

答案 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年开始的,但代码应该仍然可用: - )