组合多个Regex.Replace调用

时间:2011-05-17 01:19:58

标签: .net regex text-editor

我有一个文本处理器,其中包含数百个Regex.Replace调用。他们中的许多人都在同一文本上工作。例如,它们会删除空格和不需要的字符,在数字旁边放括号,删除黑名单等等。

有没有办法通过一次调用使用不同的模式进行多次替换?我想知道这一点,因为我的代码目前很慢,我想这会节省一些周期。

3 个答案:

答案 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 stringReplace Multiple String Elements in C#