ChouBox/Utile/HuanMeng.DotNetCore/TextCensor/TextCensorExtend.cs
2025-04-23 19:20:23 +08:00

123 lines
3.5 KiB
C#

using HuanMeng.DotNetCore.TextCensor.SensitiveWord;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
namespace HuanMeng.DotNetCore.TextCensor
{
/// <summary>
///
/// </summary>
public static class TextCensorExtend
{
/// <summary>
/// 获取文本检测
/// </summary>
/// <param name="_dirPath"></param>
/// <returns></returns>
public static ITextCensor GetITextCensor(string _dirPath)
{
return GetSensitiveWordFilterFrozen(_dirPath)
//GetSensitiveWordFilter(_dirPath)
;
}
/// <summary>
///
/// </summary>
/// <param name="_dirPath"></param>
/// <returns></returns>
public static SensitiveWordFilter GetSensitiveWordFilter(string _dirPath)
{
SensitiveWordFilter sensitiveWordFilter = new SensitiveWordFilter();
var ckPath = Path.GetFullPath(_dirPath);
var filePath = Directory.EnumerateFiles(ckPath);
foreach (var item in filePath)
{
AddShieldString(item, sensitiveWordFilter);
}
return sensitiveWordFilter;
}
/// <summary>
///
/// </summary>
/// <param name="_dirPath"></param>
/// <returns></returns>
public static SensitiveWordFilterFrozen GetSensitiveWordFilterFrozen(string _dirPath)
{
SensitiveWordFilterFrozen sensitiveWordFilter = new SensitiveWordFilterFrozen();
var ckPath = Path.GetFullPath(_dirPath);
var filePath = Directory.EnumerateFiles(ckPath);
foreach (var item in filePath)
{
AddShieldString(item, sensitiveWordFilter);
}
return sensitiveWordFilter;
}
/// <summary>
///
/// </summary>
/// <param name="path"></param>
/// <exception cref="Exception"></exception>
public static void AddShieldString(string path, SensitiveWordFilterFrozen sensitiveWordFilter)
{
if (!File.Exists(path))
{
throw new Exception("文件不存在");
}
using (StreamReader reader = new StreamReader(path, UnicodeEncoding.UTF8))
{
while (reader.Peek() > 0)
{
var tempStr = (reader.ReadLine() ?? "");
if (!string.IsNullOrEmpty(tempStr))
{
sensitiveWordFilter.AddSensitiveWord(tempStr);
}
}
}
}
/// <summary>
///
/// </summary>
/// <param name="path"></param>
/// <exception cref="Exception"></exception>
public static void AddShieldString(string path, SensitiveWordFilter sensitiveWordFilter)
{
if (!File.Exists(path))
{
throw new Exception("文件不存在");
}
using (StreamReader reader = new StreamReader(path, UnicodeEncoding.UTF8))
{
while (reader.Peek() > 0)
{
var tempStr = (reader.ReadLine() ?? "");
if (!string.IsNullOrEmpty(tempStr))
{
sensitiveWordFilter.AddSensitiveWord(tempStr);
}
}
}
}
}
}