替换c#中的模式值

时间:2015-03-20 13:10:21

标签: c# asp.net regex asp.net-mvc c#-4.0

我有字符串“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。

1 个答案:

答案 0 :(得分:3)

您可以使用Regex.Replace版本接受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]);