C#中的Regex筛选器
本文关键字:筛选 Regex 中的 | 更新日期: 2023-09-27 18:22:11
我正在为消息创建一种过滤器,但在实际替换单词的部分时遇到了一些问题。
看完这个问题后,我试着和他们一样做。然而,我想使用多个可能的单词进行过滤,并且我希望每个单词都有不同的内容可以更改。字典似乎非常适合这一点。然而,它不起作用。
Dictionary<string, string> filterWords = new Dictionary<string, string>
{
{"lol", "LAUGH OUT LOUD"},
{"wtf", "WOW THAT'S FANTASTIC"},
};
foreach (KeyValuePair<string, string> word in filterWords)
{
Regex r = new Regex(@"'b" + word.Key + "'b");
message = r.Replace(message, word.Value);
}
我看不出代码中有任何真正的错误,但它实际上并没有替换任何单词,我不知道如何修复它。
我看到的这段代码的两个问题是,它敏感地处理消息大小写,并且您错过了第二个"'b"
文本前面的@
,使"'b"
成为退格,而不是词尾标记。
尝试更换
Regex r = new Regex(@"'b" + word.Key + "'b");
带有
Regex r = new Regex(@"'b" + word.Key + @"'b", RegexOptions.IgnoreCase);
代码的其余部分应该可以正常工作。
您可能希望通过每次编译正则表达式来稍微优化代码。此外,由于filterWords
实际上不是Dictionary
,因此您可能需要使用List<Tuple<Regex,string>>
。