我有一个文本处理器,其中包含数百个Regex.Replace调用。他们中的许多人都在同一文本上工作。例如,它们会删除空格和不需要的字符,在数字旁边放括号,删除黑名单等等。
有没有办法通过一次调用使用不同的模式进行多次替换?我想知道这一点,因为我的代码目前很慢,我想这会节省一些周期。
答案 0 :(得分:1)
是的,这是一个简单的例子:
myText = new Regex("hello").Replace(myText, "");
myText = new Regex("goodBye").Replace(myText, "");
可以替换为:
myText = new Regex("hello|goodbye").Replace(myText, "");
这可能会也可能不会改善您应用的效果。这真的取决于。
答案 1 :(得分:1)
Incase,任何人都希望使用Regex替换多个值的多个字符串。 代码
"this is sentence.".Replace("is", "are");
//output- thare are sentence.
....很糟糕,因为它取代了所有匹配的字符。它不会区分"这个"和"是"。 您可以像这样使用字典和正则表达式:
Dictionary<string, string> replacements = new Dictionary<string, string>();
replacements.Add("is", "are");
replacements.Add("this", "these");
string temp;
foreach (KeyValuePair<string,string> replacement in replacements)
{
address = Regex.Replace(address, @"\b" + replacement.Key + "\\b", replacement.Value);
}
注意:请注意@"\b" + replacement.Key + "\\b"
部分。这给了我很多头痛。
答案 2 :(得分:0)
如果它只是用于空格,不需要的字符和列入黑名单的单词,为什么不尝试使用string / StringBuilder函数?
string newString = oldString.Replace('`','\0');
string newString = oldString.Replace("blackword","");
另请查看此处:Replace multiple words in string和Replace Multiple String Elements in C#