C#-通用工具方法汇总-杂篇
1- 将汉字转化成首拼
#region 将汉字转化成首拼
/// <summary>
/// 获取首字母
/// </summary>
public static string GetFristOne(string name)
{
string strTemp = "";
int iLen = name.Length;
for (int i = 0; i <= iLen - 1; i++)
{
if (!Regex.IsMatch(name.Substring(i, 1), @"[\u4E00-\u9FA5]+$"))
{
continue;
}
strTemp += GetCharSpellCode(name.Substring(i, 1));
}
return strTemp;
}
/// <summary>
/// 单个字符转化
/// </summary>
private static string GetCharSpellCode(string c)
{
char Initial = Convert.ToChar(c.Substring(0, 1));//得出首字母
ChineseChar chn = new ChineseChar(Initial);
string Initial1 = chn.Pinyins[0].Substring(0, 1);
return Initial1;
}
#endregion
2- 字符数组 <=> 字符串
#region 字符数组 <=> 字符串
/// <summary>
/// 数组转换成单个字符串
/// </summary>
/// <param name="strs">被分割字符串</param>
/// <param name="split">分割字符</param>
/// <returns></returns>
public static string ListToString1(List<string> strs, char split)
{
string res = "";
foreach (string str in strs)
{
if (string.IsNullOrEmpty(res))
res = str;
else
res = res + split + str;
}
return res;
}
/// <summary>
/// 单个字符串转换成数组
/// </summary>
/// <param name="str">被分割字符串</param>
/// <param name="split">分割字符</param>
/// <returns></returns>
public static List<string> StringToList1(string str,char split)
{
if (!string.IsNullOrEmpty(str))
{
string[] arr = str.Split(split);//分割字符串
return new List<string>(arr);
}
else
return new List<string>();
}
#endregion
3- 字符串转数字
/// <summary>
/// 字符串转数字
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static double StringToNum(string str)
{
if (string.IsNullOrEmpty(str))//字符为空
{
str = "0";
return Convert.ToDouble(str);
}
else if (!str.Contains("."))//字符不为空且不包含小数点
{
string strnum = Regex.Replace(str, @"[^\d]", "");
//string strnum = Regex.Replace(str, @"[^0-9]+", "");
if (string.IsNullOrEmpty(strnum))
{
strnum = "0";
}
return Convert.ToDouble(strnum);
}
else
{//字符不为空且包含小数点
string strnum = Regex.Replace(str, @"[^\d.\d]", "");
return Convert.ToDouble(strnum);
}
}
4- 分页
#region 将 任意类的列表(Lists) 分(OneNum)页
/// <summary>
/// 将 任意List 分页
/// </summary>
/// <param name="Lists">需要分页的列表</param>
/// <param name="PageSize">每一页的数量</param>
/// <param name="PageNum">页数</param>
public static List<T> ListToPage<T>(List<T> Lists, int PageSize, int PageNum)
{
List<T> ts = Lists.Skip((PageNum - 1) * PageSize).Take(PageSize).ToList();
return ts;
}
#endregion
//分页返回对象
public class PageOutput<T>
{
/// <summary>
/// 数组
/// </summary>
public List<T> List { get; set; }
/// <summary>
/// 总数
/// </summary>
public int Count { get; set; }
public PageOutput()
{
List = new List<T>();
}
public PageOutput(List<T> list, int pageNum, int pageSize)
{
Count = list.Count;
List = (ToolClass).ListToPage(list, pageNum, pageSize);
}
}
5- 对象去重
/// <summary>
/// 对象去重
/// </summary>
/// <typeparam name="T"></typeparam>
public class LambdaComparer<T> : IEqualityComparer<T>
{
//对象去重使用
//.Distinct(new LambdaComparer<MuchSelect>((a, b) => a.Value == b.Value, obj => obj.ToString().GetHashCode())).ToList();
private readonly Func<T, T, bool> _lambdaComparer;
private readonly Func<T, int> _lambdaHash;
public LambdaComparer(Func<T, T, bool> lambdaComparer)
: this(lambdaComparer, EqualityComparer<T>.Default.GetHashCode)
{
}
public LambdaComparer(Func<T, T, bool> lambdaComparer, Func<T, int> lambdaHash)
{
if (lambdaComparer == null)
throw new ArgumentNullException("lambdaComparer");
if (lambdaHash == null)
throw new ArgumentNullException("lambdaHash");
_lambdaComparer = lambdaComparer;
_lambdaHash = lambdaHash;
}
public bool Equals(T x, T y)
{
return _lambdaComparer(x, y);
}
public int GetHashCode(T obj)
{
return _lambdaHash(obj);
}
}
6- 序列化与反序列化示例
//序列化与反序列化
//List<FileDto> list1 = (略);
//string list2 = JsonConvert.SerializeObject(list1);//序列化
//List<FileDto> list3 = JsonConvert.DeserializeObject<List<FileDto>>(list2);//反序列化
7- base64编码和解码
/// <summary>
/// base64编码
/// </summary>
/// <param name="code_type">编码类型</param>
/// <param name="code">待编码的字符串</param>
/// <returns></returns>
public static string EncodeBase64(string code_type, string code)
{
string encode = "";
byte[] bytes = Encoding.GetEncoding(code_type).GetBytes(code);
try
{
encode = Convert.ToBase64String(bytes);
}
catch
{
encode = code;
}
return encode;
}
/// <summary>
/// base64解码
/// </summary>
/// <param name="code_type">编码类型</param>
/// <param name="code">待编码的字符串</param>
/// <returns>编码后的字符串</returns>
public static string DecodeBase64(string code_type, string code)
{
string decode = "";
byte[] bytes = Convert.FromBase64String(code);
try
{
decode = Encoding.GetEncoding(code_type).GetString(bytes);
}
catch
{
decode = code;
}
return decode;
}
8- 去除HTML标签
/// <summary>
/// 去除HTML标签 前端是富文本编辑器时可能会需要使用
/// </summary>
/// <param name="html"></param>
/// <returns></returns>
public static string RemoveHTMLTags(string html)
{
//html = "<div><p>1、测试</p><p>2、测试</p><p>3、测试</p><div>";
//需要去除后得到的值=>1、测试2、测试3、测试
string strText = Regex.Replace(html, "<[^>]+>", "");
strText = Regex.Replace(strText, "&[^;]+;", "");
return strText;
}