在 C# 中迭代正则表达式的字典
iterating over a dictionary of Regex in C#
我有一个函数可以查找并替换输入字符串的正则表达式 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 的解决方案:What is the best way to iterate over a Dictionary in C#?
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;
}
但是没有用。有一个更好的方法吗?我收到一个参数异常未处理的错误:
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;
}
如果要应用多次替换,则需要替换上一个操作的结果。
我有一个函数可以查找并替换输入字符串的正则表达式 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 的解决方案:What is the best way to iterate over a Dictionary in C#?
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;
}
但是没有用。有一个更好的方法吗?我收到一个参数异常未处理的错误:
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;
}
如果要应用多次替换,则需要替换上一个操作的结果。