347 lines
11 KiB
C#
347 lines
11 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.ComponentModel.DataAnnotations;
|
|||
|
|
using System.Drawing.Imaging;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Reflection;
|
|||
|
|
using System.Security.Cryptography;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Text.RegularExpressions;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace SupplierManager.Extensions
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 字符串扩展函数工具类
|
|||
|
|
/// </summary>
|
|||
|
|
public static class StringExtensions
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将\r\n替换成BR
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ToSafeBR(this string str)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(str))
|
|||
|
|
{
|
|||
|
|
return str.Replace("\r\n", "<br>").Replace("\r", "<br>").Replace("\n", "<br>");
|
|||
|
|
}
|
|||
|
|
return str;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 得到父部门的ID
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string GetDepartmentFatherID(this string str)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(str) && str.Length > 2)
|
|||
|
|
{
|
|||
|
|
str = str.Substring(0, str.Length - 3);
|
|||
|
|
}
|
|||
|
|
return str;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 截取字符串,超过部分用...代替
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="source"></param>
|
|||
|
|
/// <param name="len"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string Substr(this string source, int len)
|
|||
|
|
{
|
|||
|
|
return source.Substr(len, "...");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 截取字符串,超过部分用自定义代替
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="source"></param>
|
|||
|
|
/// <param name="len"></param>
|
|||
|
|
/// <param name="att"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string Substr(this string source, int len, string att)
|
|||
|
|
{
|
|||
|
|
if (string.IsNullOrEmpty(source))
|
|||
|
|
{
|
|||
|
|
return string.Empty;
|
|||
|
|
}
|
|||
|
|
att = (att ?? string.Empty);
|
|||
|
|
Regex regex = new Regex("[\\u4e00-\\u9fa5]");
|
|||
|
|
Regex regex2 = new Regex("^[A-Za-z0-9]+$");
|
|||
|
|
if (regex.IsMatch(source))
|
|||
|
|
{
|
|||
|
|
if (source.Length <= len)
|
|||
|
|
{
|
|||
|
|
return source;
|
|||
|
|
}
|
|||
|
|
return source.Substring(0, len) + att;
|
|||
|
|
}
|
|||
|
|
else if (regex2.IsMatch(source))
|
|||
|
|
{
|
|||
|
|
if (source.Length <= len * 2)
|
|||
|
|
{
|
|||
|
|
return source;
|
|||
|
|
}
|
|||
|
|
return source.Substring(0, len * 2) + att;
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (source.Length <= len)
|
|||
|
|
{
|
|||
|
|
return source;
|
|||
|
|
}
|
|||
|
|
return source.Substring(0, len) + att;
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public static string InputStr(this string source)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(source))
|
|||
|
|
{
|
|||
|
|
Regex regex = new Regex("[\\u4e00-\\u9fa5]");
|
|||
|
|
Regex regex2 = new Regex("^[A-Za-z0-9]+$");
|
|||
|
|
if (regex.IsMatch(source))
|
|||
|
|
{
|
|||
|
|
if (source.Length < 3)
|
|||
|
|
{
|
|||
|
|
return string.Format("{0}**", source[0]);
|
|||
|
|
}
|
|||
|
|
if (source.Length == 3)
|
|||
|
|
{
|
|||
|
|
return string.Format("{0}*{1}", source[0], source[source.Length - 1]);
|
|||
|
|
}
|
|||
|
|
if (source.Length > 3)
|
|||
|
|
{
|
|||
|
|
return string.Format("{0}**{1}", source[0], source[source.Length - 1]);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
if (!regex2.IsMatch(source))
|
|||
|
|
{
|
|||
|
|
return string.Format("{0}**", source.Substring(0, 2));
|
|||
|
|
}
|
|||
|
|
if (source.Length < 6)
|
|||
|
|
{
|
|||
|
|
return string.Format("{0}**", source.Substring(0, 2));
|
|||
|
|
}
|
|||
|
|
return string.Format("{0}****{1}", source.Substring(0, 2), source.Substring(source.Length - 3, 2));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return string.Empty;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 移除掉所有的Html代码
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="strHtml"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string RemoveHtml(this string strHtml)
|
|||
|
|
{
|
|||
|
|
Regex regex = new Regex("<.+?>", RegexOptions.IgnoreCase);
|
|||
|
|
strHtml = regex.Replace(strHtml, "");
|
|||
|
|
strHtml = strHtml.Replace(" ", "");
|
|||
|
|
return strHtml;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 生成0-9随机数
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="VcodeNum">生成长度</param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string RndNum(int VcodeNum)
|
|||
|
|
{
|
|||
|
|
StringBuilder stringBuilder = new StringBuilder(VcodeNum);
|
|||
|
|
Random random = new Random();
|
|||
|
|
for (int i = 1; i < VcodeNum + 1; i++)
|
|||
|
|
{
|
|||
|
|
int num = random.Next(9);
|
|||
|
|
stringBuilder.AppendFormat("{0}", num);
|
|||
|
|
}
|
|||
|
|
return stringBuilder.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 返回星号的加密
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="items"></param>
|
|||
|
|
/// <param name="mask"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string MaskStar(Dictionary<string, string> items, bool mask)
|
|||
|
|
{
|
|||
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|||
|
|
if (mask)
|
|||
|
|
{
|
|||
|
|
foreach (KeyValuePair<string, string> keyValuePair in items)
|
|||
|
|
{
|
|||
|
|
stringBuilder.Append(string.Concat(new string[]
|
|||
|
|
{
|
|||
|
|
"$('#",
|
|||
|
|
keyValuePair.Key,
|
|||
|
|
"').attr('name', '",
|
|||
|
|
keyValuePair.Key,
|
|||
|
|
"mask');"
|
|||
|
|
}));
|
|||
|
|
}
|
|||
|
|
stringBuilder.Append("$('.maskstar').attr('disabled', true);");
|
|||
|
|
stringBuilder.Append("$('.maskstar').val('***');");
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
foreach (KeyValuePair<string, string> keyValuePair2 in items)
|
|||
|
|
{
|
|||
|
|
stringBuilder.Append(string.Concat(new string[]
|
|||
|
|
{
|
|||
|
|
"$('#",
|
|||
|
|
keyValuePair2.Key,
|
|||
|
|
"').attr('name', '",
|
|||
|
|
keyValuePair2.Key,
|
|||
|
|
"');"
|
|||
|
|
}));
|
|||
|
|
stringBuilder.Append(string.Concat(new string[]
|
|||
|
|
{
|
|||
|
|
"$('#",
|
|||
|
|
keyValuePair2.Key,
|
|||
|
|
"').val('",
|
|||
|
|
keyValuePair2.Value,
|
|||
|
|
"');"
|
|||
|
|
}));
|
|||
|
|
}
|
|||
|
|
stringBuilder.Append("$('.maskstar').attr('disabled', false);");
|
|||
|
|
}
|
|||
|
|
return stringBuilder.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 给自动填充使用
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str1"></param>
|
|||
|
|
/// <param name="str2"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ToAutoComplate(this string str1, string str2)
|
|||
|
|
{
|
|||
|
|
if (!string.IsNullOrEmpty(str1) && !string.IsNullOrEmpty(str2))
|
|||
|
|
{
|
|||
|
|
return str1 + "," + str2;
|
|||
|
|
}
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 返回红色字体
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="value"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ToRedColor(this int value)
|
|||
|
|
{
|
|||
|
|
if (value != 0)
|
|||
|
|
{
|
|||
|
|
return "<font color='red'>" + value.ToString() + "</font>";
|
|||
|
|
}
|
|||
|
|
return value.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 返回安全的字符串类型如果为NULL则返回空
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="value"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ToSafeString(this object value)
|
|||
|
|
{
|
|||
|
|
if (value == null)
|
|||
|
|
{
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
return value.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将中文转换成Unicode编码,主要用在URL传递中文
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string GB2Unicode(this string str)
|
|||
|
|
{
|
|||
|
|
string text = "";
|
|||
|
|
Encoding encoding = Encoding.GetEncoding("GB2312");
|
|||
|
|
Encoding unicode = Encoding.Unicode;
|
|||
|
|
byte[] bytes = encoding.GetBytes(str);
|
|||
|
|
for (int i = 0; i < bytes.Length; i++)
|
|||
|
|
{
|
|||
|
|
string str2 = "%" + bytes[i].ToString("x");
|
|||
|
|
text += str2;
|
|||
|
|
}
|
|||
|
|
return text;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将字符串转换成为大写的MD5
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ToMD5(this string str)
|
|||
|
|
{
|
|||
|
|
MD5CryptoServiceProvider md5CryptoServiceProvider = new MD5CryptoServiceProvider();
|
|||
|
|
byte[] array = md5CryptoServiceProvider.ComputeHash(Encoding.Default.GetBytes(str));
|
|||
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|||
|
|
foreach (byte b in array)
|
|||
|
|
{
|
|||
|
|
stringBuilder.Append(b.ToString("x2"));
|
|||
|
|
}
|
|||
|
|
return stringBuilder.ToString().ToUpper();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 字节码长度转可读字符串 00000000 bytes 0.0GB
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="KSize"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
public static string ByteSizeToString(this long KSize)
|
|||
|
|
{
|
|||
|
|
if (KSize > 0L)
|
|||
|
|
{
|
|||
|
|
string[] array = new string[]
|
|||
|
|
{
|
|||
|
|
"B",
|
|||
|
|
"KB",
|
|||
|
|
"MB",
|
|||
|
|
"GB",
|
|||
|
|
"TB"
|
|||
|
|
};
|
|||
|
|
double num = 0.0;
|
|||
|
|
int num2 = array.Length - 1;
|
|||
|
|
while (num2 >= 0 && (num = Math.Round((double)KSize / Math.Pow(1024.0, (double)num2), 2)) < 1.0)
|
|||
|
|
{
|
|||
|
|
num2--;
|
|||
|
|
}
|
|||
|
|
return string.Format("{0}{1}", num, array[num2]);
|
|||
|
|
}
|
|||
|
|
return string.Empty;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
|
|||
|
|
/// <summary>
|
|||
|
|
/// 将字符串转换成为大写的MD5
|
|||
|
|
/// </summary>
|
|||
|
|
/// <param name="str"></param>
|
|||
|
|
/// <returns></returns>
|
|||
|
|
private static string GetMD5Code(this string str)
|
|||
|
|
{
|
|||
|
|
StringBuilder stringBuilder = new StringBuilder();
|
|||
|
|
using (MD5CryptoServiceProvider md5CryptoServiceProvider = new MD5CryptoServiceProvider())
|
|||
|
|
{
|
|||
|
|
byte[] array = md5CryptoServiceProvider.ComputeHash(Encoding.Default.GetBytes(str));
|
|||
|
|
foreach (byte b in array)
|
|||
|
|
{
|
|||
|
|
stringBuilder.Append(b.ToString("x2"));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
return stringBuilder.ToString();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
}
|
|||
|
|
}
|