#region 获取文件后缀
public static string GetExtendName(string filename)
{
if (!string.IsNullOrEmpty(filename))
{
var index = filename.LastIndexOf(".");
if (index >= 0)
return filename.Substring(index);
}
return string.Empty;
}
#endregion
#region 获取URL参数
public static string GetParameter(string paraName, string paraValue)
{
System.Collections.Specialized.NameValueCollection querystring = HttpContext.Current.Request.QueryString;
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("?");
if (!string.IsNullOrEmpty(paraValue)) sb.AppendFormat(paraName + "=" + paraValue);
foreach (string key in querystring.Keys)
{
if (key != paraName && !string.IsNullOrEmpty(key))
{
if (sb.ToString().Length > 1) sb.Append("&");
sb.AppendFormat("{0}={1}", key, HttpContext.Current.Server.UrlEncode(querystring[key]));
}
}
return sb.ToString();
}
#endregion
#region 数组转化成逗号隔开的字符串
/// <summary>
/// 数组转化成逗号隔开的字符串
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
public static string Array2String(string[] arr)
{
return Array2String(arr, ",");
}
public static string Array2String(string[] arr, string splitChar)
{
if (arr != null)
{
StringBuilder sb = new StringBuilder();
if (arr != null)
{
for (int i = 0; i < arr.Length; i++)
{
sb.Append(arr[i]);
if (i + 1 < arr.Length) sb.Append(splitChar);
}
}
return sb.ToString();
}
return string.Empty;
}
#endregion
#region 字符串转化为数组
public static string[] String2Array(string str)
{
if (!string.IsNullOrEmpty(str))
{
return str.Split(',');
}
return null;
}
#endregion
#region 数值类型判断
public static bool IsDecimal(string number)
{
if (string.IsNullOrEmpty(number)) return false;
decimal result;
return Decimal.TryParse(number, out result);
}
public static bool IsInt(string number)
{
if (string.IsNullOrEmpty(number)) return false;
int result;
return int.TryParse(number, out result);
}
#endregion
#region 日期转换
public static DateTime StringToDateTimeByYYYYMMDD(string time)
{
if (time.Length == 8)
{
return new DateTime(int.Parse(time.Substring(0, 4)), int.Parse(time.Substring(4, 2)), int.Parse(time.Substring(6, 2)));
}
throw new Exception("不合法");
}
#endregion
#region 函数返回值
public static Dictionary<int, string> FunctionReturnValue(int code, string messsage)
{
return new Dictionary<int, string>
{
{0, code.ToString()},
{1, messsage ?? string.Empty}
};
}
#endregion
#region 获取支付订单ID
public static string GetPayOrderID()
{
char[] s = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
string num = "";
Random r = new Random();
for (int i = 0; i < 3; i++)
{
num += s[r.Next(0, s.Length)].ToString();
}
string order = DateTime.Now.ToString("yyyyMMddHHmmssfff") + num;
return order;
}
#endregion
#region 冒泡排序法
public static string[] BubbleSort(string[] r)
{
int i, j; //交换标志
string temp;
bool exchange;
for (i = 0; i < r.Length; i++) //最多做R.Length-1趟排序
{
exchange = false; //本趟排序开始前,交换标志应为假
for (j = r.Length - 2; j >= i; j--)
{//交换条件
if (System.String.CompareOrdinal(r[j + 1], r[j]) < 0)
{
temp = r[j + 1];
r[j + 1] = r[j];
r[j] = temp;
exchange = true; //发生了交换,故将交换标志置为真
}
}
if (!exchange) //本趟排序未发生交换,提前终止算法
{
break;
}
}
return r;
}
#endregion
#region 指定字节流编码计算MD5哈希值
/// <summary>
/// 指定字节流编码计算MD5哈希值
/// </summary>
/// <param name="source"></param>
/// <param name="bytesEncoding"></param>
/// <returns></returns>
public static string MD5(string source, Encoding bytesEncoding)
{
var sourceBytes = bytesEncoding.GetBytes(source);
var md5 = new MD5CryptoServiceProvider();
var hashedBytes = md5.ComputeHash(sourceBytes);
var buffer = new StringBuilder(hashedBytes.Length);
foreach (byte item in hashedBytes)
buffer.AppendFormat("{0:x2}", item);
return buffer.ToString();
}
/// <summary>
/// 指定字节流编码计算MD5哈希值
/// </summary>
/// <param name="source"></param>
/// <returns></returns>
public static string MD5(string source)
{
return MD5(source, Encoding.Default);
}
#endregion
#region 获取远程服务器ATN结果
public static String GetHttpResponse(String url)
{
string strResult;
try
{
HttpWebRequest myReq = (HttpWebRequest)HttpWebRequest.Create(url);
HttpWebResponse HttpWResp = (HttpWebResponse)myReq.GetResponse();
Stream myStream = HttpWResp.GetResponseStream();
StreamReader sr = new StreamReader(myStream, Encoding.Default);
StringBuilder strBuilder = new StringBuilder();
while (-1 != sr.Peek())
{
strBuilder.Append(sr.ReadLine());
}
strResult = strBuilder.ToString();
}
catch (Exception exp)
{
strResult = "错误:" + exp.Message;
}
return strResult;
}
#endregion
#region 数字转大写
public static string Number2Chinese(int number)
{
string cstr = "";
switch (number)
{
case 1: cstr = "一"; break;
case 2: cstr = "二"; break;
case 3: cstr = "三"; break;
case 4: cstr = "四"; break;
case 5: cstr = "五"; break;
case 6: cstr = "六"; break;
case 7: cstr = "七"; break;
case 8: cstr = "八"; break;
case 9: cstr = "九"; break;
case 10: cstr = "十"; break;
}
return (cstr);
}
#endregion
#region 获取IP
public static string GetClientIP()
{
return System.Web.HttpContext.Current.Request.UserHostAddress;
}
#endregion
#region 截取字符串
public static string Substring(string inputString, int length)
{
if (!string.IsNullOrEmpty(inputString))
{
length = inputString.Length < length ? inputString.Length : length;
return inputString.Substring(0, length);
}
return string.Empty;
}
#endregion
#region 身材随机数字
public static string GetRandomNumber(int length)
{
length = length == 0 ? 4 : length;
char[] s = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' };
string num = "";
Random r = new Random();
for (int i = 0; i < length; i++)
{
num += s[r.Next(0, s.Length)].ToString();
}
return num;
}
#endregion
#region 写入和获取Cookie
/// <summary>
/// 读取Cookie
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public static string GetCookie(string key)
{
if (HttpContext.Current.Request.Cookies[key] == null) return null;
return HttpContext.Current.Request.Cookies[key].Value;
}
/// <summary>
/// 写入Cookie
/// </summary>
/// <param name="key"></param>
/// <param name="value"></param>
/// <param name="expires"></param>
public static void WriteCookie(string key, string value, double expires)
{
HttpCookie Cookie = new HttpCookie(key);
string host = HttpContext.Current.Request.Url.Host;
if (host != "localhost")
{
Cookie.Domain = host.Substring(host.IndexOf('.'));
}
if (expires > 0) Cookie.Expires = DateTime.Now.AddMinutes(expires);
Cookie.Value = value;
HttpContext.Current.Response.Cookies.Add(Cookie);
}
#endregion
#region 时间转换
public static double TimeDotNet2Java(DateTime time)
{
TimeSpan timeSpan = new TimeSpan(time.Ticks - new DateTime(1970, 1, 1, 0, 0, 0).Ticks);
return (timeSpan.TotalMilliseconds);
}
#endregion
#region 判断是否是手机浏览器
public static bool IsMobileBrowse()
{
bool isMobile = false;
string ua = System.Web.HttpContext.Current.Request.UserAgent;
string[] uas = { "symbian", "android", "iphone", "ucweb", "nokia", "mqqbrowser" };
for (var i = 0; i < uas.Length; i++)
{
if (ua.ToLower().IndexOf(uas[i]) > -1)
{
isMobile = true;
break;
}
}
return isMobile;
}
#endregion
#region 枚举转化为Dictionary
public static Dictionary<int, string> BehaviorEnum2Dict()
{
Dictionary<int, string> dict = new Dictionary<int, string>();
Type type = typeof(TravelB2B.Core.Utils.BehaviorsEnum);
foreach (object o in System.Enum.GetValues(type))
{
dict.Add((int)o, o.ToString());
}
return dict;
}
public static Dictionary<int, string> SMSKindEnum2Dict()
{
Dictionary<int, string> dict = new Dictionary<int, string>();
Type type = typeof(TravelB2B.Core.Domain.SMSKind);
foreach (object o in System.Enum.GetValues(type))
{
dict.Add((int)o, o.ToString());
}
return dict;
}
#endregion
#region 提取中文
public static string GetChinese(string text)
{
StringBuilder sb = new StringBuilder();
int currentcode = -1;
for (int i = 0; i < text.Length; i++)
{
currentcode = (int)text[i];
if (currentcode > 19968 && currentcode < 40869)
{
sb.Append(text[i].ToString());
}
}
return sb.ToString();
}
#endregion
#region 获取时间戳
public static long ConvertDateTimeInt()
{
return ConvertDateTimeInt(DateTime.Now);
}
public static long ConvertDateTimeInt(DateTime time)
{
double intResult = 0;
System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1));
intResult = (time - startTime).TotalSeconds;
return (long)intResult;
}
#endregion
#region Base64加密解密
public static string EncodeBase64(Encoding encode, string source)
{
string code = source;
byte[] bytes = encode.GetBytes(source);
try
{
code = Convert.ToBase64String(bytes);
}
catch
{
code = source;
}
return code;
}
/// <summary>
/// Base64加密,采用utf8编码方式加密
/// </summary>
/// <param name="source">待加密的明文</param>
/// <returns>加密后的字符串</returns>
public static string EncodeBase64(string source)
{
return EncodeBase64(Encoding.UTF8, source);
}
/// <summary>
/// Base64解密
/// </summary>
/// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
/// <param name="result">待解密的密文</param>
/// <returns>解密后的字符串</returns>
public static string DecodeBase64(Encoding encode, string result)
{
string decode = "";
byte[] bytes = Convert.FromBase64String(result);
try
{
decode = encode.GetString(bytes);
}
catch
{
decode = result;
}
return decode;
}
/// <summary>
/// Base64解密,采用utf8编码方式解密
/// </summary>
/// <param name="result">待解密的密文</param>
/// <returns>解密后的字符串</returns>
public static string DecodeBase64(string result)
{
return DecodeBase64(Encoding.UTF8, result);
}
#endregion
#region Base64加密解密
public static string EncodeBase64(Encoding encode, string source)
{
string code = source;
byte[] bytes = encode.GetBytes(source);
try
{
code = Convert.ToBase64String(bytes);
}
catch
{
code = source;
}
return code;
}
/// <summary>
/// Base64加密,采用utf8编码方式加密
/// </summary>
/// <param name="source">待加密的明文</param>
/// <returns>加密后的字符串</returns>
public static string EncodeBase64(string source)
{
return EncodeBase64(Encoding.UTF8, source);
}
/// <summary>
/// Base64解密
/// </summary>
/// <param name="codeName">解密采用的编码方式,注意和加密时采用的方式一致</param>
/// <param name="result">待解密的密文</param>
/// <returns>解密后的字符串</returns>
public static string DecodeBase64(Encoding encode, string result)
{
string decode = "";
byte[] bytes = Convert.FromBase64String(result);
try
{
decode = encode.GetString(bytes);
}
catch
{
decode = result;
}
return decode;
}
/// <summary>
/// Base64解密,采用utf8编码方式解密
/// </summary>
/// <param name="result">待解密的密文</param>
/// <returns>解密后的字符串</returns>
public static string DecodeBase64(string result)
{
return DecodeBase64(Encoding.UTF8, result);
}
#endregion
#region 是否是微信访问
public static bool IsMicroMessenger()
{
string userAgent = System.Web.HttpContext.Current.Request.UserAgent;
return userAgent.IndexOf("MicroMessenger") > -1;
}
#endregion
#region 获取Post数据
/// <summary>
/// 获取Post数据
/// </summary>
/// <returns></returns>
public static string GetHttpPostData()
{
string requestData = "";
using (Stream recieveStream = HttpContext.Current.Request.InputStream)
{
using (StreamReader readStream = new StreamReader(recieveStream, Encoding.UTF8))
{
requestData = readStream.ReadToEnd();
}
}
return requestData;
}
#endregion
#region 在一个字符串中查找图片的src的值,返回一个数组
public static string[] GetSrc(string str)
{
string regStr = "\\<IMG\\ [\\s\\S]*?src=['\"]?(?<p>[^'\"\\>\\ ]+)['\"\\>\\ ]";
string cont1 = string.Empty; //图片的src
Regex reg = new Regex(regStr, RegexOptions.Compiled | RegexOptions.IgnoreCase);
Match match = reg.Match(str);
string picSrc = "";
while (match.Success)
{
picSrc = match.Groups["p"].Value;
cont1 += string.Format("{0}", picSrc + ",");
match = match.NextMatch();
}
cont1 = cont1.Substring(0, cont1.LastIndexOf(','));
string[] strList = cont1.Split(',');
return strList;
}
#endregion
#region 获取一个图片的宽和高
public static int[] PictureAttribute(string filePath)
{
int[] picture = new int[2];
Image pic = Image.FromFile(filePath);//filePath是该图片的绝对路径
picture[0] = pic.Width;//长度像素值
picture[1] = pic.Height;//高度像素值
return picture;
}
#endregion
#region 提取图片地址
public static string[] GetHtmlImageUrlList(string htmlText)
{
Regex regImg = new Regex(@"<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.IgnoreCase);
//新建一个matches的MatchCollection对象 保存 匹配对象个数(img标签)
MatchCollection matches = regImg.Matches(htmlText);
int i = 0;
string[] sUrlList = new string[matches.Count];
//遍历所有的img标签对象
foreach (Match match in matches)
{
//获取所有Img的路径src,并保存到数组中
sUrlList[i++] = match.Groups["imgUrl"].Value;
}
return sUrlList;
}
#endregion
//20180720 王鑫
#region 国内手机号格式校验
public static bool CheckMobliePhone(string phone)
{
//电信手机号码正则
string dianxin = @"^1[3578][01379]\d{8}$";
Regex dReg = new Regex(dianxin);
//联通手机号正则
string liantong = @"^1[34578][01256]\d{8}$";
Regex tReg = new Regex(liantong);
//移动手机号正则
string yidong = @"^(134[012345678]\d{7}|1[34578][012356789]\d{8})$";
Regex yReg = new Regex(yidong);
if (dReg.IsMatch(phone) || tReg.IsMatch(phone) || yReg.IsMatch(phone))
{
return true;
}
return false;
}
#endregion
//20180810 王鑫
#region 渲染二维码
public static Bitmap RenderQrCode(string str)
{
QRCodeGenerator.ECCLevel eccLevel = QRCodeGenerator.ECCLevel.L;
using (QRCodeGenerator qrGenerator = new QRCodeGenerator())
{
using (QRCodeData qrCodeData = qrGenerator.CreateQrCode(str, eccLevel))
{
using (QRCode qrCode = new QRCode(qrCodeData))
{
return qrCode.GetGraphic(8, Color.Black, Color.White, false);
}
}
}
}
#endregion
#region 网络图片到流的转换
public static string FileToStream(string SourFilePath)
{
try
{
WebRequest request = WebRequest.Create(SourFilePath);
WebResponse response = request.GetResponse();
Stream s = response.GetResponseStream();
byte[] data = new byte[1024];
int length = 0;
MemoryStream ms = new MemoryStream();
while ((length = s.Read(data, 0, data.Length)) > 0)
{
ms.Write(data, 0, length);
}
ms.Seek(0, SeekOrigin.Begin);
var image = Image.FromStream(ms);
var bytedata = ImageTobyte(image);
string base64 = Convert.ToBase64String(bytedata);
return base64;
}
catch (Exception ex)
{
logger.Error(ex.Message);
throw ex;
}
}
private static byte[] ImageTobyte(Image image)
{
MemoryStream ms = new MemoryStream();
Bitmap bi = new Bitmap(image);
bi.Save(ms, image.RawFormat);
byte[] data = new byte[ms.Length];
ms.Seek(0, SeekOrigin.Begin);
ms.Read(data, 0, data.Length);
return data;
}
#endregion
#region 根据相对路径在项目根路径下创建文件夹
//根据相对路径在项目根路径下创建文件夹
private bool CreateFolderIfNeeded(string path)
{
bool result = true;
if (!Directory.Exists(path))
{
try
{
Directory.CreateDirectory(path);
}
catch (Exception)
{
result = false;
}
}
return result;
}
#endregion
#region 密码加密
public static String EncryptPassword(String password, String salt)
{
var bytes = Encoding.UTF8.GetBytes(password + salt);
byte[] hashBytes = new System.Security.Cryptography.SHA256Managed().ComputeHash(bytes);
string hashString = Convert.ToBase64String(hashBytes);
return hashString;
}
#endregion