在C#中对Regex的字典进行迭代
本文关键字:迭代 字典 中对 Regex | 更新日期: 2023-09-27 18:01:27
我有一个函数,可以查找并替换输入字符串text
的正则表达式
public static string Replacements(string text)
{
string output = Regex.Replace(text, @"'b[a-zA-Z0-9.-_]+@[a-z][A-Z0-9.-]+'.[a-zA-Z0-9.-]+'b","email");
return output;
}
假设我想将替换正则表达式放入字典中
static Dictionary<string, string> dict1 = new Dictionary<string, string>
{
{@"^('+'d{1,2}'s)?'(?'d{3}')?['s.-]'d{3}['s.-]'d{4}$", "phoneno"},
{@"'b[a-zA-Z0-9.-_]+@[a-z][A-Z0-9.-]+'.[a-zA-Z0-9.-]+'b","email"},
};
我想迭代字典来替换文本。我该怎么做?我在这里尝试了forloop的解决方案:在C#中迭代Dictionary的最佳方式是什么?
public static string Replacements(string text)
{
string output = text;
foreach (KeyValuePair<string, string> item in dict1)
{
output = Regex.Replace(text, item.Key, item.Value);
}
return output;
}
但这并没有奏效。有更好的方法吗?我得到一个Argument异常是未处理的错误:
parsing "^('+'d{1,2}'s)?'(?'d{3}')?['s.-]'d{3}['s.-]'d{4}$" - Quantifier {x,y} following nothing.
public static string Replacements(string text)
{
string output = text;
foreach (KeyValuePair<string, string> item in dict1)
{
//here replace output again
output = Regex.Replace(output, item.Key, item.Value);
}
return output;
}
如果要应用多个替换,则需要替换上一个操作的结果。