sur*_*lit 6 .net c# regex string
我需要检查字符串是否包含任何脏话.
根据另一个问题的一些建议,我创建了一个包含以下单词的HashSet:
HashSet<string> swearWords = new HashSet<string>() { "word_one", "word_two", "etc" };
Run Code Online (Sandbox Code Playgroud)
现在我需要查看swearWords我的字符串中是否包含任何值.
我已经看到它反过来了,例如:
swearWords.Contains(myString)
Run Code Online (Sandbox Code Playgroud)
但这将失败.
查看HashSet中是否有任何单词的最快方法是myString什么?
注意:我想我可以使用foreach循环依次检查每个单词,如果找到匹配则中断,我只是想知道是否有更快的方法.
Spr*_*gue 10
如果您将发誓放在IEnumerable <>实现容器中:
var containsSwears = swarWords.Any(w => myString.Contains(w));
Run Code Online (Sandbox Code Playgroud)
注意:HashSet <>实现IEnumerable <>
你可以试试一个正则表达式,但我不确定它是否更快.
Regex rx = new Regex("(" + string.Join("|", swearWords) + ")");
rx.IsMatch(myString)
Run Code Online (Sandbox Code Playgroud)