using System; using System.Collections.Generic; using System.IO; using System.Web; using System.Web.UI; using System.Text; using System.Text.RegularExpressions; using System.Net; using System.Reflection; using System.ComponentModel; using System.Web.UI.WebControls; namespace MyWeb { public class function : System.Web.UI.Page { public function() { // // TODO: 在這裡新增建構函式邏輯 // } public string randCode(int count) { //產生驗證碼 Random rnd = new Random(Guid.NewGuid().GetHashCode()); string[] code = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "m", "n", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z" }; string rnd_code = null; //產生10碼 for (int i = 1; i <= count; i++) { rnd_code += "" + code[rnd.Next(0, code.Length - 1)]; } return rnd_code; } public string randKey(int count) { //產生驗證碼 Random rnd = new Random(Guid.NewGuid().GetHashCode()); string[] code = { "0","1","2","3","4","5","6","7","8","9", "a","b","c","d","e","f","g","h","i", "j","k","l","m", "n", "o","p","q","r","s","t","u","v","w","x","y","z", "A","B","B","D","E","F","G","H","I", "J","K","L","M", "N", "O","P","Q","R","S","T","U","V","W","X","Y","Z", "+","/" }; string rnd_code = null; //產生10碼 for (int i = 1; i <= count; i++) { rnd_code += "" + code[rnd.Next(0, code.Length - 1)]; } return rnd_code; } public bool IsNumeric(object Expression) { bool isNum; double retNum; isNum = Double.TryParse(Convert.ToString(Expression), System.Globalization.NumberStyles.Any, System.Globalization.NumberFormatInfo.InvariantInfo, out retNum); return isNum; } public bool isDate(object chkString) { DateTime dt; return DateTime.TryParse(Convert.ToString(chkString), out dt); } public DateTime ValDate(object Expression) { DateTime _DateTime = Convert.ToDateTime(Expression); return _DateTime; } public int Val(object Expression) { int _Int = 0; if (IsNumeric(Expression)) { _Int = Convert.ToInt32(Expression.ToString().Replace(",", "")); } return _Int; } public float ValFloat(object Expression) { float _Int = 0; if (!isStrNull(Expression)) { _Int = Convert.ToSingle(ValString(Expression).Replace(",", "")); } return _Int; } public string ValMoney(object Expression, int DecimalLength = 2) //千分位,預設最多到小數點第2位 { string format = "N0"; string[] m = ValString(Expression).Replace(",", "").Split('.'); if (ValString(Expression).IndexOf(".") > -1) { int ML = (m[m.Length - 1].Length > DecimalLength ? DecimalLength : m[m.Length - 1].Length); if (!isStrNull(m[m.Length - 1])) { format = "N" + ML.ToString(); } } return ValFloat(Expression).ToString(format); } public string ValString(object Expression) { string _String = ""; _String = Convert.ToString(Expression); return _String; } public string ValMoneyCh(object Expression) { string price = Expression.ToString().Split('.')[0]; //去除小數點 string i = price.Replace(",", ""); //去除千分位 string[] numc_arr = ("零,壹,貳,參,肆,伍,陸,柒,捌,玖").Split(','); string[] unic_arr = (",拾,佰,仟").Split(','); string[] unic1_arr = ("元整,萬,億,兆,京").Split(','); int c0 = 0; List str = new List(); do { int aa = 0; int c1 = 0; string s = ""; //取最右邊四位數跑迴圈,不足四位就全取 int lan = (i.Length >= 4 ? 4 : i.Length); int j = Convert.ToInt32(i.Substring(i.Length - lan, lan)); while (j > 0) { int k = j % 10; //餘數 if (k > 0) { aa = 1; s = numc_arr[k] + unic_arr[c1] + s; } else if (k == 0 && aa == 1) { s = "0" + s; } j = j / 10; //商 c1++; } //轉成中文後丟入陣列,全部為零不加單位 str.Add((s == "" ? "" : s + unic1_arr[c0])); //計算剩餘字串長度 int count_len = i.Length - 4; i = (count_len > 0 ? i.Substring(0, count_len) : ""); c0++; } while (!string.IsNullOrEmpty(i)); string chstring = ""; while (str.Count > 0) { chstring += str[str.Count - 1]; str.Remove(str[str.Count - 1]); } string pattern = "0+"; string replacement = "零"; Regex rgx = new Regex(pattern); string result = rgx.Replace(chstring, replacement); return result; } public string Left(object Expression, int Length) { string str = ""; str = ValString(Expression); if (Length > str.Length) { Length = str.Length; } str = str.Substring(0, Length); return str; } public string Right(object Expression, int Length) { string str = ""; str = ValString(Expression); int startIndex = str.Length - Length; if (startIndex < 0) { startIndex = 0; Length = str.Length; } str = str.Substring(startIndex, Length); return str; } public bool isStrNull(object value) { return (value == null || value == DBNull.Value || Convert.ToString(value) == "" ? true : false); } //截字 public string cut_str(string str, int limit) { return str; //不截字,避免顏文字之類的圖在viewstate會出錯 MatchCollection findCount; string Based = "[\u0080-\uFFFF]"; //中日韓3byte以上的字符 string tmp = null; int j = 0; for (int i = 0; i < str.Length; i++) { findCount = Regex.Matches(str.Substring(i, 1), Based, RegexOptions.Compiled); //找str裡面是否有Based指定的字 if (findCount.Count == 0) { j += 1; } else { j += 2; //一個中文字占兩個 } if (j <= limit) { tmp = tmp + str.Substring(i, 1); } else { i -= 1; if (i < str.Length) { if (!isStrNull(str.Substring(i, 1).Trim())) { //捨棄不完整的英文單字或數字 int n = 0; for (int t = tmp.Length - 1; t >= 0; t--) { n++; if (Regex.Matches(tmp.Substring(t, 1), Based, RegexOptions.Compiled).Count > 0) //中文字 { tmp = Left(tmp, tmp.Length - n + 1); break; } else if (isStrNull(tmp.Substring(t, 1).Trim())) { tmp = Left(tmp, tmp.Length - n); break; } } } tmp = tmp + "..."; } break; } } return tmp; } public enum msgIcon : int { none = 0, success = 1, error = 2, warning = 3, info = 4, question = 5 } public void ScriptMsg(string txt, string url="", msgIcon icon= msgIcon.none) { ScriptManager.RegisterClientScriptBlock((Page)HttpContext.Current.Handler, typeof(string), "js", "msgbox('" + txt + "','" + (icon != msgIcon.none ? icon.ToString() : "") + "','" + url + "');", true); } public void ScriptMsgTop(string txt, msgIcon icon) { ScriptManager.RegisterClientScriptBlock((Page)HttpContext.Current.Handler, typeof(string), "js", "msgtop('" + txt + "','" + (icon != msgIcon.none ? icon.ToString() : "") + "');", true); } public void ScriptJS(string script) { ScriptManager.RegisterClientScriptBlock((Page)HttpContext.Current.Handler, typeof(string), "js", script, true); } public void ScriptMsg2(string txt, string url = "", msgIcon icon = msgIcon.none) { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "init", "msgbox('" + txt + "','" + (icon != msgIcon.none ? icon.ToString() : "") + "','" + url + "');", true); } public void ScriptMsgTop2(string txt, msgIcon icon) { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "init", "msgtop('" + txt + "','" + (icon != msgIcon.none ? icon.ToString() : "") + "');", true); } public void ScriptJS2(string script) { ScriptManager.RegisterStartupScript(Page, Page.GetType(), "init", script, true); } public string br(string str) { return str.Replace(Convert.ToString((char)10), "
").Replace(Convert.ToString((char)13), ""); } //日期格式 public string datetype(string dtmp) { if (dtmp != null) { System.DateTime d = ValDate(dtmp); return d.ToString("yyyy-MM-dd"); } else { return null; } } public string datetype(string dtmp, string format) { if (dtmp != null) { System.DateTime d = ValDate(dtmp); return d.ToString(format); } else { return null; } } string allowReqAtt = System.Configuration.ConfigurationManager.AppSettings["allowReqAtt"].ToString(); public bool AllowReq(string name) { if (!isStrNull(allowReqAtt)) { string[] qns = allowReqAtt.Split(','); foreach (string qn in qns) if (qn.ToLower() == name.ToLower()) return true; return false; } return true; } //傳回GET值並拿掉不要的,回傳格式為?xxxx=xxxx&yyyy=yyyy public string rtnQueryString(string noUseQuery) { string new_query = ""; if (HttpContext.Current.Request.Url.AbsoluteUri.Split('?').Length == 2) { string[] query = HttpContext.Current.Request.Url.AbsoluteUri.Split('?')[1].Split('&'); for (int i = 0; i < query.Length; i++) { string[] qs = query[i].Split('='); if (qs.Length == 2 && qs[0].ToLower() != noUseQuery.ToLower()) { if (AllowReq(qs[0])) new_query += (new_query == "" ? "?" : "&") + qs[0] + "=" + Server.UrlEncode(Server.UrlDecode(qs[1])); } } } return new_query; } public string rtnQueryString(Array noUseQuery) { string new_query = ""; if (HttpContext.Current.Request.Url.AbsoluteUri.Split('?').Length == 2) { string[] query = HttpContext.Current.Request.Url.AbsoluteUri.Split('?')[1].Split('&'); for (int i = 0; i < query.Length; i++) { string[] qs = query[i].Split('='); if (qs.Length == 2) { bool setAdd = true; foreach (string nq in noUseQuery) { if (qs[0].ToLower() == nq.ToLower()) { setAdd = false; break; } } if (setAdd) { if (AllowReq(qs[0])) new_query += (new_query == "" ? "?" : "&") + qs[0] + "=" + Server.UrlEncode(Server.UrlDecode(qs[1])); } } } } return new_query; } public string UrlHost() { string url = (IsHttps() ? "https://" : "http://") //+ HttpContext.Current.Request.Url.Host + Request.ServerVariables["HTTP_HOST"] + VirtualPathUtility.ToAbsolute("~/"); return url; } public string UrlAddr() { string url = (IsHttps() ? "https://" : "http://") + HttpContext.Current.Request.Url.Host + HttpContext.Current.Request.Url.AbsolutePath; return url; } public static bool IsHttps() { return HttpContext.Current.Request.IsSecureConnection; } #region 列舉 public string GetEnumsDescription(Enum value) { FieldInfo fi = value.GetType().GetField(value.ToString()); DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false); return attributes.Length > 0 ? attributes[0].Description : value.ToString(); } public void InitEnumsOptions(Control obj) { foreach (object value in Enum.GetValues(typeof(T))) if (obj is DropDownList) ((DropDownList)obj).Items.Add(new ListItem(GetEnumsDescription((Enum)value), ((int)value).ToString())); else if (obj is RadioButtonList) ((RadioButtonList)obj).Items.Add(new ListItem(GetEnumsDescription((Enum)value), ((int)value).ToString())); else if (obj is CheckBoxList) ((CheckBoxList)obj).Items.Add(new ListItem(GetEnumsDescription((Enum)value), ((int)value).ToString())); } #endregion public class WreqInfo { public string log = ""; public string data = ""; } public enum Method { POST, GET, PUT, DELETE } public WreqInfo WRequest(string URL, Method method, string POSTdata, string Referer = "", string UserAgent = "") { WreqInfo responseData = new WreqInfo(); try { HttpWebRequest hwrequest = (HttpWebRequest)WebRequest.Create(URL); hwrequest.Accept = "*/*"; hwrequest.AllowAutoRedirect = true; hwrequest.Timeout = 5000; hwrequest.Method = method.ToString(); if (!isStrNull(UserAgent)) hwrequest.UserAgent = UserAgent; else hwrequest.UserAgent = "http_requester/0.1"; if (!isStrNull(Referer)) hwrequest.Referer = Referer; if (URL.ToLower().IndexOf("https://") > -1) { ServicePointManager.ServerCertificateValidationCallback = delegate { return true; }; ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; hwrequest.ClientCertificates.Add(new System.Security.Cryptography.X509Certificates.X509Certificate()); } if (hwrequest.Method == "POST") { hwrequest.ContentType = "application/x-www-form-urlencoded"; //ASCIIEncoding encoding = new ASCIIEncoding(); UTF8Encoding encoding = new UTF8Encoding(); byte[] postByteArray = encoding.GetBytes(POSTdata); hwrequest.ContentLength = postByteArray.Length; Stream postStream = hwrequest.GetRequestStream(); postStream.Write(postByteArray, 0, postByteArray.Length); postStream.Close(); } HttpWebResponse hwresponse = (HttpWebResponse)hwrequest.GetResponse(); if (hwresponse.StatusCode == HttpStatusCode.OK) { StreamReader responseStream = new StreamReader(hwresponse.GetResponseStream()); responseData.data = responseStream.ReadToEnd(); } hwresponse.Close(); } catch (Exception ex) { responseData.log = ex.Message; } return responseData; } #region 繁簡轉換 public static class ChineseConverter { internal const int LOCALE_SYSTEM_DEFAULT = 0x0800; internal const int LCMAP_SIMPLIFIED_CHINESE = 0x02000000; internal const int LCMAP_TRADITIONAL_CHINESE = 0x04000000; [System.Runtime.InteropServices.DllImport("kernel32", CharSet = System.Runtime.InteropServices.CharSet.Auto, SetLastError = true)] internal static extern int LCMapString(int Locale, int dwMapFlags, string lpSrcStr, int cchSrc, [System.Runtime.InteropServices.Out] string lpDestStr, int cchDest); public static string ToSimplified(string pSource) { String tTarget = new String(' ', pSource.Length); int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_SIMPLIFIED_CHINESE, pSource, pSource.Length, tTarget, pSource.Length); return tTarget; } public static string ToTraditional(string pSource) { String tTarget = new String(' ', pSource.Length); int tReturn = LCMapString(LOCALE_SYSTEM_DEFAULT, LCMAP_TRADITIONAL_CHINESE, pSource, pSource.Length, tTarget, pSource.Length); return tTarget; } } #endregion #region 讀檔 public string ReadFileContent(string path) { string text = ""; try { if (path.IndexOf("~/") > -1) { path = Server.MapPath(path); } Stream stream = File.Open(path, FileMode.Open, FileAccess.Read, FileShare.Read); StreamReader objReader = new StreamReader(stream); text = objReader.ReadToEnd(); objReader.Close(); objReader.Dispose(); stream.Close(); stream.Dispose(); } catch (Exception) { //throw; } return text; } #endregion } }