using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Common
{
///
/// 生成模板
///
public class GenerateTemplate
{
private static GenerateTemplate _instacne;
public static GenerateTemplate Instance
{
get
{
if (_instacne == null)
{
_instacne = new GenerateTemplate();
}
return _instacne;
}
}
///
/// 生成模板
///
/// 内容
/// 返回模板内容
public string GenerateTemplates(string content)
{
try
{
StringBuilder sb = new StringBuilder();
List strList = new List();
//,=65292 。 = 12290 != 65281 《 = 12298 》= 12299
List zhAscII = new List();
zhAscII.Add(65292);
zhAscII.Add(12290);
zhAscII.Add(65281);
zhAscII.Add(12298);
zhAscII.Add(12299);
zhAscII.Add(65306);
foreach (char c in content)
{
//Console.WriteLine($"{c} ="+ Convert.ToInt32(c));
if ((Convert.ToInt32(c) >= 32 && Convert.ToInt32(c) <= 122) || zhAscII.Contains(Convert.ToInt32(c)))
{
sb.Append(c);
}
else
{
if (sb.Length > 0)
{
strList.Add(sb.ToString());
sb.Remove(0, sb.Length);
}
}
}
//最后结尾的时候含有ASCII码里面设定的值
if (sb.Length > 0)
{
strList.Add(sb.ToString());
sb.Remove(0, sb.Length);
}
string[] arr = strList.ToArray();
arr = arr.OrderByDescending(o => o.Length).ToArray();
strList = arr.ToList();
string result = content;
foreach (string s in strList)
{
if (s.Length <= 10)
{
result = result.Replace(s, "*"); continue;
}
if (s.Length > 10 && s.Length <= 20)
{
result = result.Replace(s, "**"); continue;
}
if (s.Length > 20)
{
result = result.Replace(s, "***"); continue;
}
}
int count = SubstringCount(result, "*");
if (count == result.Length)
{
//todo,不入库,全部都是* ,不进行下一步的处理
return "";
}
return result;
}
catch (Exception ex)
{
return "";
}
}
///
/// 计算字符串中子串出现的次数
///
/// 字符串
/// 子串
/// 出现的次数
private int SubstringCount(string str, string substring)
{
if (str.Contains(substring))
{
string strReplaced = str.Replace(substring, "");
return (str.Length - strReplaced.Length) / substring.Length;
}
return 0;
}
}
}