在 C# 中替换模式值

Replace pattern values in c#

我有字符串 "Test uid=1 Test2 uid=2 Test3 uid=3"

我写了正则表达式来获取所有 uid。

这给了我 uid 列表 {1,2,3}

对于这个值,我有一些差异值 {1 = 2015, 2=2016, 3=3014}

我尝试使用 Regex.replace(str, regexPattern, "")

因为它用单个值替换所有正则表达式匹配项。

现在我想用新值替换这个旧值。

代码

string str = "Test uid=1 Test2 uid=2 Test3 uid=3"
var uiList = regex.Matches(str);

我正在考虑 MatchCollection。

您可以使用Regex.Replace accepting MatchEvaluator - Regex.Replace Method (String, String, MatchEvaluator)

的版本

示例方法(不检查输入数据):

string input = "Test uid=1 Test2 uid=2 Test3 uid=3";
var replacements = new Dictionary<string,string> {
    { "1", "2015" },
    { "2", "2016" },
    { "3", "3014" }
};
string output = Regex.Replace(input, @"(?<=uid=)\d+", m => replacements[m.Value]);