我有一个HashSet<string>集合,里面是敏感词,现在我要做一个敏感词过滤功能,如果我输入的文字中连续两个字及以上在敏感词库中,就要返回bool值true,不存在则返回false,请写一个C#版的给我
时间: 2024-12-18 21:23:40 浏览: 3
java利用DFA算法实现敏感词过滤功能
你可以使用C#的LINQ和HashSet的特性来实现这个功能。首先,你需要将敏感词存储在一个HashSet中以便快速查找。下面是一个简单的示例:
```csharp
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
HashSet<string> sensitiveWords = new HashSet<string>() { "敏感", "词1", "词2" }; // 假设这是你的敏感词列表
public bool IsSensitive(string input)
{
int consecutiveCount = 0; // 初始化连续匹配计数器
string[] words = input.Split(' '); // 将输入文本按空格分割成单词数组
foreach (string word in words)
{
if (sensitiveWords.Contains(word))
{
consecutiveCount++;
if (consecutiveCount > 1) return true; // 如果找到连续的敏感词,立即返回true
}
else
{
consecutiveCount = 0; // 当前单词不是敏感词,从头开始计数
}
}
return false; // 没有连续的敏感词,返回false
}
static void Main(string[] args)
{
Console.WriteLine(IsSensitive("这是一句测试,包含敏感词"));
Console.WriteLine(IsSensitive("这个词存在两次"));
Console.WriteLine(IsSensitive("只有这个词"));
}
}
```
在这个代码里,`IsSensitive`方法会检查输入字符串中的每个单词是否在敏感词集中,如果是,它会增加连续计数器。当连续计数超过1时,就认为找到了符合条件的敏感词组合,返回true。如果没有找到连续的敏感词,最后返回false。
阅读全文