我正在为消息创建一种过滤器,但实际上替换了部分单词时遇到了一些麻烦.
在查看了这个问题之后,我尝试的几乎就像他们一样.但是,我想使用多个可能的单词进行过滤,我希望每个单词都有不同的东西可以更改.字典似乎对此非常有用.但是,它不起作用.
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);
}
Run Code Online (Sandbox Code Playgroud)
我没有看到任何真正的错误的代码,但它实际上并没有更换任何话,我难倒就如何解决它.
我在这段代码中看到的两个问题是,它以区分大小写的方式处理消息,并且错过@了第二个"\b"文字的前面,创建"\b"了一个退格键,而不是一个单词结束标记.
尝试更换
Regex r = new Regex(@"\b" + word.Key + "\b");
Run Code Online (Sandbox Code Playgroud)
同
Regex r = new Regex(@"\b" + word.Key + @"\b", RegexOptions.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)
你的其余代码应该可以正常工作.
您可能希望通过编译正则表达式来优化代码.另外,既然filterWords不是真的Dictionary,你可能想要使用List<Tuple<Regex,string>>.
| 归档时间: |
|
| 查看次数: |
742 次 |
| 最近记录: |