為大家分享一下個人的一個Utils系統幫助類,可能有些現在有新的技術替代,自行修改哈~
這個幫助類主要包含:對象轉換處理 、分割字符串、截取字符串、刪除最后結尾的一個逗號、 刪除最后結尾的指定字符后的字符、 生成指定長度的字符串、 生成日期隨機碼、 生成隨機字母或數、字 截取字符長度、 對象<-->JSON 4.0使用、 對象<-->JSON 2.0使用litjson插件、 DataTable<-->JSON、 List<--->DataTable、 清除HTML標記、 清除HTML標記且返回相應的長度、 TXT代碼轉換成HTML格式、 HTML代碼轉換成TXT格式、 檢測是否有Sql危險字符、 過濾特殊字符、 檢查是否為IP地址、 獲得配置文件節點XML文件的絕對路徑、 獲得當前絕對路徑、 文件操作、 讀取或寫入cookie 替換指定的字符串、 URL處理、 MD5加密方法、 獲得當前頁面客戶端的IP、 數據導出為EXCEL、 列的命名、 構造URL POST請求、 構造URL GET請求、 POST請求、 訪問提交創建文件 (供生成靜態頁面使用,無需模板)、 漢字轉拼音、 獲取網頁的HTML內容
廢話不多說,上代碼:
對象轉換處理

1 #region 對象轉換處理 2 /// <summary> 3 /// 判斷對象是否為Int32類型的數字 4 /// </summary> 5 /// <param name="Expression"></param> 6 /// <returns></returns> 7 public static bool IsNumeric(object expression) 8 { 9 if (expression != null) 10 return IsNumeric(expression.ToString()); 11 12 return false; 13 14 } 15 16 /// <summary> 17 /// 判斷對象是否為Int32類型的數字 18 /// </summary> 19 /// <param name="Expression"></param> 20 /// <returns></returns> 21 public static bool IsNumeric(string expression) 22 { 23 if (expression != null) 24 { 25 string str = expression; 26 if (str.Length > 0 && str.Length <= 11 && Regex.IsMatch(str, @"^[-]?[0-9]*[.]?[0-9]*$")) 27 { 28 if ((str.Length < 10) || (str.Length == 10 && str[0] == '1') || (str.Length == 11 && str[0] == '-' && str[1] == '1')) 29 return true; 30 } 31 } 32 return false; 33 } 34 35 /// <summary> 36 /// 是否為Double類型 37 /// </summary> 38 /// <param name="expression"></param> 39 /// <returns></returns> 40 public static bool IsDouble(object expression) 41 { 42 if (expression != null) 43 return Regex.IsMatch(expression.ToString(), @"^([0-9])[0-9]*(\.\w*)?$"); 44 45 return false; 46 } 47 48 /// <summary> 49 /// 將字符串轉換為數組 50 /// </summary> 51 /// <param name="str">字符串</param> 52 /// <returns>字符串數組</returns> 53 public static string[] GetStrArray(string str) 54 { 55 return str.Split(new char[',']); 56 } 57 58 /// <summary> 59 /// 將數組轉換為字符串 60 /// </summary> 61 /// <param name="list">List</param> 62 /// <param name="speater">分隔符</param> 63 /// <returns>String</returns> 64 public static string GetArrayStr(List<string> list, string speater) 65 { 66 StringBuilder sb = new StringBuilder(); 67 for (int i = 0; i < list.Count; i++) 68 { 69 if (i == list.Count - 1) 70 { 71 sb.Append(list[i]); 72 } 73 else 74 { 75 sb.Append(list[i]); 76 sb.Append(speater); 77 } 78 } 79 return sb.ToString(); 80 } 81 82 /// <summary> 83 /// object型轉換為bool型 84 /// </summary> 85 /// <param name="strValue">要轉換的字符串</param> 86 /// <param name="defValue">缺省值</param> 87 /// <returns>轉換后的bool類型結果</returns> 88 public static bool StrToBool(object expression, bool defValue) 89 { 90 if (expression != null) 91 return StrToBool(expression, defValue); 92 93 return defValue; 94 } 95 96 /// <summary> 97 /// string型轉換為bool型 98 /// </summary> 99 /// <param name="strValue">要轉換的字符串</param> 100 /// <param name="defValue">缺省值</param> 101 /// <returns>轉換后的bool類型結果</returns> 102 public static bool StrToBool(string expression, bool defValue) 103 { 104 if (expression != null) 105 { 106 if (string.Compare(expression, "true", true) == 0) 107 return true; 108 else if (string.Compare(expression, "false", true) == 0) 109 return false; 110 } 111 return defValue; 112 } 113 114 /// <summary> 115 /// 將對象轉換為Int32類型 116 /// </summary> 117 /// <param name="expression">要轉換的字符串</param> 118 /// <param name="defValue">缺省值</param> 119 /// <returns>轉換后的int類型結果</returns> 120 public static int ObjToInt(object expression, int defValue) 121 { 122 if (expression != null) 123 return StrToInt(expression.ToString(), defValue); 124 125 return defValue; 126 } 127 128 /// <summary> 129 /// 將字符串轉換為Int32類型 130 /// </summary> 131 /// <param name="expression">要轉換的字符串</param> 132 /// <param name="defValue">缺省值</param> 133 /// <returns>轉換后的int類型結果</returns> 134 public static int StrToInt(string expression, int defValue) 135 { 136 if (string.IsNullOrEmpty(expression) || expression.Trim().Length >= 11 || !Regex.IsMatch(expression.Trim(), @"^([-]|[0-9])[0-9]*(\.\w*)?$")) 137 return defValue; 138 139 int rv; 140 if (Int32.TryParse(expression, out rv)) 141 return rv; 142 143 return Convert.ToInt32(StrToFloat(expression, defValue)); 144 } 145 146 /// <summary> 147 /// Object型轉換為decimal型 148 /// </summary> 149 /// <param name="strValue">要轉換的字符串</param> 150 /// <param name="defValue">缺省值</param> 151 /// <returns>轉換后的decimal類型結果</returns> 152 public static decimal ObjToDecimal(object expression, decimal defValue) 153 { 154 if (expression != null) 155 return StrToDecimal(expression.ToString(), defValue); 156 157 return defValue; 158 } 159 160 /// <summary> 161 /// string型轉換為decimal型 162 /// </summary> 163 /// <param name="strValue">要轉換的字符串</param> 164 /// <param name="defValue">缺省值</param> 165 /// <returns>轉換后的decimal類型結果</returns> 166 public static decimal StrToDecimal(string expression, decimal defValue) 167 { 168 if ((expression == null) || (expression.Length > 10)) 169 return defValue; 170 171 decimal intValue = defValue; 172 if (expression != null) 173 { 174 bool IsDecimal = Regex.IsMatch(expression, @"^([-]|[0-9])[0-9]*(\.\w*)?$"); 175 if (IsDecimal) 176 decimal.TryParse(expression, out intValue); 177 } 178 return intValue; 179 } 180 181 /// <summary> 182 /// Object型轉換為float型 183 /// </summary> 184 /// <param name="strValue">要轉換的字符串</param> 185 /// <param name="defValue">缺省值</param> 186 /// <returns>轉換后的int類型結果</returns> 187 public static float ObjToFloat(object expression, float defValue) 188 { 189 if (expression != null) 190 return StrToFloat(expression.ToString(), defValue); 191 192 return defValue; 193 } 194 195 /// <summary> 196 /// string型轉換為float型 197 /// </summary> 198 /// <param name="strValue">要轉換的字符串</param> 199 /// <param name="defValue">缺省值</param> 200 /// <returns>轉換后的int類型結果</returns> 201 public static float StrToFloat(string expression, float defValue) 202 { 203 if ((expression == null) || (expression.Length > 10)) 204 return defValue; 205 206 float intValue = defValue; 207 if (expression != null) 208 { 209 bool IsFloat = Regex.IsMatch(expression, @"^([-]|[0-9])[0-9]*(\.\w*)?$"); 210 if (IsFloat) 211 float.TryParse(expression, out intValue); 212 } 213 return intValue; 214 } 215 216 /// <summary> 217 /// 將對象轉換為日期時間類型 218 /// </summary> 219 /// <param name="str">要轉換的字符串</param> 220 /// <param name="defValue">缺省值</param> 221 /// <returns>轉換后的int類型結果</returns> 222 public static DateTime StrToDateTime(string str, DateTime defValue) 223 { 224 if (!string.IsNullOrEmpty(str)) 225 { 226 DateTime dateTime; 227 if (DateTime.TryParse(str, out dateTime)) 228 return dateTime; 229 } 230 return defValue; 231 } 232 233 /// <summary> 234 /// 將對象轉換為日期時間類型 235 /// </summary> 236 /// <param name="str">要轉換的字符串</param> 237 /// <returns>轉換后的int類型結果</returns> 238 public static DateTime StrToDateTime(string str) 239 { 240 return StrToDateTime(str, DateTime.Now); 241 } 242 243 /// <summary> 244 /// 將對象轉換為日期時間類型 245 /// </summary> 246 /// <param name="obj">要轉換的對象</param> 247 /// <returns>轉換后的int類型結果</returns> 248 public static DateTime ObjectToDateTime(object obj) 249 { 250 return StrToDateTime(obj.ToString()); 251 } 252 253 /// <summary> 254 /// 將對象轉換為日期時間類型 255 /// </summary> 256 /// <param name="obj">要轉換的對象</param> 257 /// <param name="defValue">缺省值</param> 258 /// <returns>轉換后的int類型結果</returns> 259 public static DateTime ObjectToDateTime(object obj, DateTime defValue) 260 { 261 return StrToDateTime(obj.ToString(), defValue); 262 } 263 264 /// <summary> 265 /// 將對象轉換為字符串 266 /// </summary> 267 /// <param name="obj">要轉換的對象</param> 268 /// <returns>轉換后的string類型結果</returns> 269 public static string ObjectToStr(object obj) 270 { 271 if (obj == null) 272 return ""; 273 return obj.ToString().Trim(); 274 } 275 #endregion
分割字符串

1 #region 分割字符串 2 /// <summary> 3 /// 分割字符串 4 /// </summary> 5 public static string[] SplitString(string strContent, string strSplit) 6 { 7 if (!string.IsNullOrEmpty(strContent)) 8 { 9 if (strContent.IndexOf(strSplit) < 0) 10 return new string[] { strContent }; 11 12 return Regex.Split(strContent, Regex.Escape(strSplit), RegexOptions.IgnoreCase); 13 } 14 else 15 return new string[0] { }; 16 } 17 18 /// <summary> 19 /// 分割字符串 20 /// </summary> 21 /// <returns></returns> 22 public static string[] SplitString(string strContent, string strSplit, int count) 23 { 24 string[] result = new string[count]; 25 string[] splited = SplitString(strContent, strSplit); 26 27 for (int i = 0; i < count; i++) 28 { 29 if (i < splited.Length) 30 result[i] = splited[i]; 31 else 32 result[i] = string.Empty; 33 } 34 35 return result; 36 } 37 #endregion
截取字符串

1 #region 截取字符串 2 public static string GetSubString(string p_SrcString, int p_Length, string p_TailString) 3 { 4 return GetSubString(p_SrcString, 0, p_Length, p_TailString); 5 } 6 public static string GetSubString(string p_SrcString, int p_StartIndex, int p_Length, string p_TailString) 7 { 8 string str = p_SrcString; 9 byte[] bytes = Encoding.UTF8.GetBytes(p_SrcString); 10 foreach (char ch in Encoding.UTF8.GetChars(bytes)) 11 { 12 if (((ch > 'ࠀ') && (ch < '一')) || ((ch > 0xac00) && (ch < 0xd7a3))) 13 { 14 if (p_StartIndex >= p_SrcString.Length) 15 { 16 return ""; 17 } 18 return p_SrcString.Substring(p_StartIndex, ((p_Length + p_StartIndex) > p_SrcString.Length) ? (p_SrcString.Length - p_StartIndex) : p_Length); 19 } 20 } 21 if (p_Length < 0) 22 { 23 return str; 24 } 25 byte[] sourceArray = Encoding.Default.GetBytes(p_SrcString); 26 if (sourceArray.Length <= p_StartIndex) 27 { 28 return str; 29 } 30 int length = sourceArray.Length; 31 if (sourceArray.Length > (p_StartIndex + p_Length)) 32 { 33 length = p_Length + p_StartIndex; 34 } 35 else 36 { 37 p_Length = sourceArray.Length - p_StartIndex; 38 p_TailString = ""; 39 } 40 int num2 = p_Length; 41 int[] numArray = new int[p_Length]; 42 byte[] destinationArray = null; 43 int num3 = 0; 44 for (int i = p_StartIndex; i < length; i++) 45 { 46 if (sourceArray[i] > 0x7f) 47 { 48 num3++; 49 if (num3 == 3) 50 { 51 num3 = 1; 52 } 53 } 54 else 55 { 56 num3 = 0; 57 } 58 numArray[i] = num3; 59 } 60 if ((sourceArray[length - 1] > 0x7f) && (numArray[p_Length - 1] == 1)) 61 { 62 num2 = p_Length + 1; 63 } 64 destinationArray = new byte[num2]; 65 Array.Copy(sourceArray, p_StartIndex, destinationArray, 0, num2); 66 return (Encoding.Default.GetString(destinationArray) + p_TailString); 67 } 68 #endregion
刪除最后結尾的一個逗號

1 #region 刪除最后結尾的一個逗號 2 /// <summary> 3 /// 刪除最后結尾的一個逗號 4 /// </summary> 5 public static string DelLastComma(string str) 6 { 7 return str.Substring(0, str.LastIndexOf(",")); 8 } 9 #endregion
刪除最后結尾的指定字符后的字符

1 #region 刪除最后結尾的指定字符后的字符 2 /// <summary> 3 /// 刪除最后結尾的指定字符后的字符 4 /// </summary> 5 public static string DelLastChar(string str, string strchar) 6 { 7 if (string.IsNullOrEmpty(str)) 8 return ""; 9 if (str.LastIndexOf(strchar) >= 0 && str.LastIndexOf(strchar) == str.Length - 1) 10 { 11 return str.Substring(0, str.LastIndexOf(strchar)); 12 } 13 return str; 14 } 15 #endregion
生成指定長度的字符串

1 #region 生成指定長度的字符串 2 /// <summary> 3 /// 生成指定長度的字符串,即生成strLong個str字符串 4 /// </summary> 5 /// <param name="strLong">生成的長度</param> 6 /// <param name="str">以str生成字符串</param> 7 /// <returns></returns> 8 public static string StringOfChar(int strLong, string str) 9 { 10 string ReturnStr = ""; 11 for (int i = 0; i < strLong; i++) 12 { 13 ReturnStr += str; 14 } 15 16 return ReturnStr; 17 } 18 #endregion
生成日期隨機碼

1 #region 生成日期隨機碼 2 /// <summary> 3 /// 生成日期隨機碼 4 /// </summary> 5 /// <returns></returns> 6 public static string GetRamCode() 7 { 8 #region 9 return DateTime.Now.ToString("yyyyMMddHHmmssffff"); 10 #endregion 11 } 12 #endregion
生成隨機字母或數字

1 #region 生成隨機字母或數字 2 /// <summary> 3 /// 生成隨機數字 4 /// </summary> 5 /// <param name="length">生成長度</param> 6 /// <returns></returns> 7 public static string Number(int Length) 8 { 9 return Number(Length, false); 10 } 11 12 /// <summary> 13 /// 生成隨機數字 14 /// </summary> 15 /// <param name="Length">生成長度</param> 16 /// <param name="Sleep">是否要在生成前將當前線程阻止以避免重復</param> 17 /// <returns></returns> 18 public static string Number(int Length, bool Sleep) 19 { 20 if (Sleep) 21 System.Threading.Thread.Sleep(3); 22 string result = ""; 23 System.Random random = new Random(); 24 for (int i = 0; i < Length; i++) 25 { 26 result += random.Next(10).ToString(); 27 } 28 return result; 29 } 30 /// <summary> 31 /// 生成隨機字母字符串(數字字母混和) 32 /// </summary> 33 /// <param name="codeCount">待生成的位數</param> 34 public static string GetCheckCode(int codeCount) 35 { 36 string str = string.Empty; 37 int rep = 0; 38 long num2 = DateTime.Now.Ticks + rep; 39 rep++; 40 Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep))); 41 for (int i = 0; i < codeCount; i++) 42 { 43 char ch; 44 int num = random.Next(); 45 if ((num % 2) == 0) 46 { 47 ch = (char)(0x30 + ((ushort)(num % 10))); 48 } 49 else 50 { 51 ch = (char)(0x41 + ((ushort)(num % 0x1a))); 52 } 53 str = str + ch.ToString(); 54 } 55 return str; 56 } 57 /// <summary> 58 /// 根據日期和隨機碼生成訂單號 59 /// </summary> 60 /// <returns></returns> 61 public static string GetOrderNumber() 62 { 63 string num = DateTime.Now.ToString("yyMMddHHmmss");//yyyyMMddHHmmssms 64 return num + Number(2).ToString(); 65 } 66 private static int Next(int numSeeds, int length) 67 { 68 byte[] buffer = new byte[length]; 69 System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider(); 70 Gen.GetBytes(buffer); 71 uint randomResult = 0x0;//這里用uint作為生成的隨機數 72 for (int i = 0; i < length; i++) 73 { 74 randomResult |= ((uint)buffer[i] << ((length - 1 - i) * 8)); 75 } 76 return (int)(randomResult % numSeeds); 77 } 78 #endregion
截取字符長度

1 #region 截取字符長度 2 /// <summary> 3 /// 截取字符長度 4 /// </summary> 5 /// <param name="inputString">字符</param> 6 /// <param name="len">長度</param> 7 /// <returns></returns> 8 public static string CutString(string inputString, int len) 9 { 10 if (string.IsNullOrEmpty(inputString)) 11 return ""; 12 inputString = DropHTML(inputString); 13 ASCIIEncoding ascii = new ASCIIEncoding(); 14 int tempLen = 0; 15 string tempString = ""; 16 byte[] s = ascii.GetBytes(inputString); 17 for (int i = 0; i < s.Length; i++) 18 { 19 if ((int)s[i] == 63) 20 { 21 tempLen += 2; 22 } 23 else 24 { 25 tempLen += 1; 26 } 27 28 try 29 { 30 tempString += inputString.Substring(i, 1); 31 } 32 catch 33 { 34 break; 35 } 36 37 if (tempLen > len) 38 break; 39 } 40 //如果截過則加上半個省略號 41 byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString); 42 if (mybyte.Length > len) 43 tempString += "…"; 44 return tempString; 45 } 46 #endregion
對象<-->JSON 4.0使用

1 #region 對象<-->JSON 4.0使用 2 /// <summary> 3 /// 對象轉JSON 4 /// </summary> 5 /// <typeparam name="T">對象實體</typeparam> 6 /// <param name="t">內容</param> 7 /// <returns>json包</returns> 8 public static string ObjetcToJson<T>(T t) 9 { 10 try 11 { 12 DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T)); 13 string szJson = ""; 14 using (MemoryStream stream = new MemoryStream()) 15 { 16 json.WriteObject(stream, t); 17 szJson = Encoding.UTF8.GetString(stream.ToArray()); 18 } 19 return szJson; 20 } 21 catch { return ""; } 22 } 23 24 /// <summary> 25 /// Json包轉對象 26 /// </summary> 27 /// <typeparam name="T">對象</typeparam> 28 /// <param name="jsonstring">json包</param> 29 /// <returns>異常拋null</returns> 30 public static object JsonToObject<T>(string jsonstring) 31 { 32 object result = null; 33 try 34 { 35 DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T)); 36 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstring))) 37 { 38 result = json.ReadObject(stream); 39 } 40 return result; 41 } 42 catch { return result; } 43 } 44 #endregion
對象<-->JSON 2.0使用litjson插件

1 #region 對象<-->JSON 2.0 使用litjson插件 2 /// <summary> 3 /// 對象轉JSON jsonData 4 /// </summary> 5 /// <typeparam name="T"></typeparam> 6 /// <param name="t"></param> 7 /// <returns></returns> 8 //public static string ObjetcToJsonData<T>(T t) 9 //{ 10 // try 11 // { 12 // JsonData json = new JsonData(t); 13 // return json.ToJson(); 14 // } 15 // catch 16 // { 17 // return ""; 18 // } 19 //} 20 21 ///// <summary> 22 ///// 對象轉JSON jsonMapper 23 ///// </summary> 24 ///// <typeparam name="T"></typeparam> 25 ///// <param name="t"></param> 26 ///// <returns></returns> 27 //public static string ObjetcToJsonMapper<T>(T t) 28 //{ 29 // try 30 // { 31 // JsonData json = JsonMapper.ToJson(t); 32 // return json.ToJson(); 33 // } 34 // catch 35 // { 36 // return ""; 37 // } 38 //} 39 40 ///// <summary> 41 ///// json轉對象 jsonMapper 42 ///// </summary> 43 ///// <param name="jsons"></param> 44 ///// <returns></returns> 45 //public static object JsonToObject(string jsons) 46 //{ 47 // try 48 // { 49 // JsonData jsonObject = JsonMapper.ToObject(jsons); 50 // return jsonObject; 51 // } 52 // catch { return null; } 53 //} 54 55 #endregion
DataTable<-->JSON

1 #region DataTable<-->JSON 2 /// <summary> 3 /// DataTable轉為json 4 /// </summary> 5 /// <param name="dt">DataTable</param> 6 /// <returns>json數據</returns> 7 public static string DataTableToJson(DataTable dt) 8 { 9 List<Dictionary<string, object>> list = new List<Dictionary<string, object>>(); 10 foreach (DataRow dr in dt.Rows) 11 { 12 Dictionary<string, object> result = new Dictionary<string, object>(); 13 foreach (DataColumn dc in dt.Columns) 14 { 15 result.Add(dc.ColumnName, dr[dc]); 16 } 17 list.Add(result); 18 } 19 20 return SerializeToJson(list); 21 } 22 /// <summary> 23 /// 序列化對象為Json字符串 24 /// </summary> 25 /// <param name="obj">要序列化的對象</param> 26 /// <param name="recursionLimit">序列化對象的深度,默認為100</param> 27 /// <returns>Json字符串</returns> 28 public static string SerializeToJson(object obj, int recursionLimit = 100) 29 { 30 try 31 { 32 JavaScriptSerializer serialize = new JavaScriptSerializer(); 33 serialize.RecursionLimit = recursionLimit; 34 return serialize.Serialize(obj); 35 } 36 catch { return ""; } 37 } 38 /// <summary> 39 /// json包轉DataTable 40 /// </summary> 41 /// <param name="jsons"></param> 42 /// <returns></returns> 43 public static DataTable JsonToDataTable(string jsons) 44 { 45 DataTable dt = new DataTable(); 46 try 47 { 48 JavaScriptSerializer serialize = new JavaScriptSerializer(); 49 serialize.MaxJsonLength = Int32.MaxValue; 50 ArrayList list = serialize.Deserialize<ArrayList>(jsons); 51 if (list.Count > 0) 52 { 53 foreach (Dictionary<string, object> item in list) 54 { 55 if (item.Keys.Count == 0)//無值返回空 56 { 57 return dt; 58 } 59 if (dt.Columns.Count == 0)//初始Columns 60 { 61 foreach (string current in item.Keys) 62 { 63 dt.Columns.Add(current, item[current].GetType()); 64 } 65 } 66 DataRow dr = dt.NewRow(); 67 foreach (string current in item.Keys) 68 { 69 dr[current] = item[current]; 70 } 71 dt.Rows.Add(dr); 72 } 73 } 74 } 75 catch 76 { 77 return dt; 78 } 79 return dt; 80 } 81 #endregion
List<--->DataTable

1 #region List<--->DataTable 2 /// <summary> 3 /// DataTable轉換泛型集合 4 /// </summary> 5 /// <typeparam name="T"></typeparam> 6 /// <param name="table"></param> 7 /// <returns></returns> 8 public static List<T> DataTableToList<T>(DataTable table) 9 { 10 List<T> list = new List<T>(); 11 T t = default(T); 12 PropertyInfo[] propertypes = null; 13 string tempName = string.Empty; 14 foreach (DataRow row in table.Rows) 15 { 16 t = Activator.CreateInstance<T>(); 17 propertypes = t.GetType().GetProperties(); 18 foreach (PropertyInfo pro in propertypes) 19 { 20 tempName = pro.Name; 21 if (table.Columns.Contains(tempName)) 22 { 23 object value = row[tempName]; 24 if (!value.ToString().Equals("")) 25 { 26 pro.SetValue(t, value, null); 27 } 28 } 29 } 30 list.Add(t); 31 } 32 return list.Count == 0 ? null : list; 33 } 34 35 /// <summary> 36 /// 將集合類轉換成DataTable 37 /// </summary> 38 /// <param name="list">集合</param> 39 /// <returns>DataTable</returns> 40 public static DataTable ListToDataTable(IList list) 41 { 42 DataTable result = new DataTable(); 43 if (list != null && list.Count > 0) 44 { 45 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 46 foreach (PropertyInfo pi in propertys) 47 { 48 result.Columns.Add(pi.Name, pi.PropertyType); 49 } 50 for (int i = 0; i < list.Count; i++) 51 { 52 ArrayList tempList = new ArrayList(); 53 foreach (PropertyInfo pi in propertys) 54 { 55 object obj = pi.GetValue(list[i], null); 56 tempList.Add(obj); 57 } 58 object[] array = tempList.ToArray(); 59 result.LoadDataRow(array, true); 60 } 61 } 62 return result; 63 } 64 public static List<T> ConvertTo<T>(DataTable dt) where T : new() 65 { 66 if (dt == null) return null; 67 if (dt.Rows.Count <= 0) return null; 68 69 List<T> list = new List<T>(); 70 try 71 { 72 List<string> columnsName = new List<string>(); 73 foreach (DataColumn dataColumn in dt.Columns) 74 { 75 columnsName.Add(dataColumn.ColumnName);//得到所有的表頭 76 } 77 list = dt.AsEnumerable().ToList().ConvertAll<T>(row => GetObject<T>(row, columnsName)); //轉換 78 return list; 79 } 80 catch 81 { 82 return null; 83 } 84 } 85 86 public static T GetObject<T>(DataRow row, List<string> columnsName) where T : new() 87 { 88 T obj = new T(); 89 try 90 { 91 string columnname = ""; 92 string value = ""; 93 PropertyInfo[] Properties = typeof(T).GetProperties(); 94 foreach (PropertyInfo objProperty in Properties) //遍歷T的屬性 95 { 96 columnname = columnsName.Find(name => name.ToLower() == objProperty.Name.ToLower()); //尋找可以匹配的表頭名稱 97 if (!string.IsNullOrEmpty(columnname)) 98 { 99 value = row[columnname].ToString(); 100 if (!string.IsNullOrEmpty(value)) 101 { 102 if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null) //存在匹配的表頭 103 { 104 value = row[columnname].ToString().Replace("$", "").Replace(",", ""); //從dataRow中提取數據 105 objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null); //賦值操作 106 } 107 else 108 { 109 value = row[columnname].ToString().Replace("%", ""); //存在匹配的表頭 110 objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);//賦值操作 111 } 112 } 113 } 114 } 115 return obj; 116 } 117 catch 118 { 119 return obj; 120 } 121 } 122 /// <summary> 123 /// 將泛型集合類轉換成DataTable 124 /// </summary> 125 /// <typeparam name="T">集合項類型</typeparam> 126 /// <param name="list">集合</param> 127 /// <param name="propertyName">需要返回的列的列名</param> 128 /// <returns>數據集(表)</returns> 129 public static DataTable ListToDataTable<T>(IList<T> list, params string[] propertyName) 130 { 131 List<string> propertyNameList = new List<string>(); 132 if (propertyName != null) 133 propertyNameList.AddRange(propertyName); 134 DataTable result = new DataTable(); 135 if (list != null && list.Count > 0) 136 { 137 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 138 foreach (PropertyInfo pi in propertys) 139 { 140 if (propertyNameList.Count == 0) 141 { 142 result.Columns.Add(pi.Name, pi.PropertyType); 143 } 144 else 145 { 146 if (propertyNameList.Contains(pi.Name)) 147 result.Columns.Add(pi.Name, pi.PropertyType); 148 } 149 } 150 for (int i = 0; i < list.Count; i++) 151 { 152 ArrayList tempList = new ArrayList(); 153 foreach (PropertyInfo pi in propertys) 154 { 155 if (propertyNameList.Count == 0) 156 { 157 object obj = pi.GetValue(list[i], null); 158 tempList.Add(obj); 159 } 160 else 161 { 162 if (propertyNameList.Contains(pi.Name)) 163 { 164 object obj = pi.GetValue(list[i], null); 165 tempList.Add(obj); 166 } 167 } 168 } 169 object[] array = tempList.ToArray(); 170 result.LoadDataRow(array, true); 171 } 172 } 173 return result; 174 } 175 176 #endregion
清除HTML標記

1 #region 清除HTML標記 2 public static string DropHTML(string Htmlstring) 3 { 4 if (string.IsNullOrEmpty(Htmlstring)) return ""; 5 //刪除腳本 6 Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase); 7 //刪除HTML 8 Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase); 9 Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase); 10 Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase); 11 Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase); 12 Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase); 13 Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase); 14 Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase); 15 Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase); 16 Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase); 17 Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase); 18 Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase); 19 Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase); 20 Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase); 21 22 Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase); 23 Htmlstring.Replace("<", ""); 24 Htmlstring.Replace(">", ""); 25 Htmlstring.Replace("\r\n", ""); 26 Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim(); 27 return Htmlstring; 28 } 29 #endregion
清除HTML標記且返回相應的長度

1 #region 清除HTML標記且返回相應的長度 2 public static string DropHTML(string Htmlstring, int strLen) 3 { 4 return CutString(DropHTML(Htmlstring), strLen); 5 } 6 #endregion
TXT代碼轉換成HTML格式

1 #region TXT代碼轉換成HTML格式 2 /// <summary> 3 /// 字符串字符處理 4 /// </summary> 5 /// <param name="chr">等待處理的字符串</param> 6 /// <returns>處理后的字符串</returns> 7 /// //把TXT代碼轉換成HTML格式 8 public static String ToHtml(string Input) 9 { 10 StringBuilder sb = new StringBuilder(Input); 11 sb.Replace("&", "&"); 12 sb.Replace("<", "<"); 13 sb.Replace(">", ">"); 14 sb.Replace("\r\n", "<br />"); 15 sb.Replace("\n", "<br />"); 16 sb.Replace("\t", " "); 17 //sb.Replace(" ", " "); 18 return sb.ToString(); 19 } 20 #endregion
HTML代碼轉換成TXT格式

1 #region HTML代碼轉換成TXT格式 2 /// <summary> 3 /// 字符串字符處理 4 /// </summary> 5 /// <param name="chr">等待處理的字符串</param> 6 /// <returns>處理后的字符串</returns> 7 /// //把HTML代碼轉換成TXT格式 8 public static String ToTxt(String Input) 9 { 10 StringBuilder sb = new StringBuilder(Input); 11 sb.Replace(" ", " "); 12 sb.Replace("<br>", "\r\n"); 13 sb.Replace("<br>", "\n"); 14 sb.Replace("<br />", "\n"); 15 sb.Replace("<br />", "\r\n"); 16 sb.Replace("<", "<"); 17 sb.Replace(">", ">"); 18 sb.Replace("&", "&"); 19 return sb.ToString(); 20 } 21 #endregion
檢測是否有Sql危險字符

1 #region 檢測是否有Sql危險字符 2 /// <summary> 3 /// 檢測是否有Sql危險字符 4 /// </summary> 5 /// <param name="str">要判斷字符串</param> 6 /// <returns>判斷結果</returns> 7 public static bool IsSafeSqlString(string str) 8 { 9 return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']"); 10 } 11 12 /// <summary> 13 /// 檢查危險字符 14 /// </summary> 15 /// <param name="Input"></param> 16 /// <returns></returns> 17 public static string Filter(string sInput) 18 { 19 if (sInput == null || sInput == "") 20 return null; 21 string sInput1 = sInput.ToLower(); 22 string output = sInput; 23 string pattern = @"*|and|exec|insert|select|delete|update|count|master|truncate|declare|char(|mid(|chr(|'"; 24 if (Regex.Match(sInput1, Regex.Escape(pattern), RegexOptions.Compiled | RegexOptions.IgnoreCase).Success) 25 { 26 throw new Exception("字符串中含有非法字符!"); 27 } 28 else 29 { 30 output = output.Replace("'", "''"); 31 } 32 return output; 33 } 34 35 /// <summary> 36 /// 檢查過濾設定的危險字符 37 /// </summary> 38 /// <param name="InText">要過濾的字符串 </param> 39 /// <returns>如果參數存在不安全字符,則返回true </returns> 40 public static bool SqlFilter(string word, string InText) 41 { 42 if (InText == null) 43 return false; 44 foreach (string i in word.Split('|')) 45 { 46 if ((InText.ToLower().IndexOf(i + " ") > -1) || (InText.ToLower().IndexOf(" " + i) > -1)) 47 { 48 return true; 49 } 50 } 51 return false; 52 } 53 #endregion
過濾特殊字符

1 #region 過濾特殊字符 2 /// <summary> 3 /// 過濾特殊字符 4 /// </summary> 5 /// <param name="Input"></param> 6 /// <returns></returns> 7 public static string Htmls(string Input) 8 { 9 if (Input != string.Empty && Input != null) 10 { 11 string ihtml = Input.ToLower(); 12 ihtml = ihtml.Replace("<script", "<script"); 13 ihtml = ihtml.Replace("script>", "script>"); 14 ihtml = ihtml.Replace("<%", "<%"); 15 ihtml = ihtml.Replace("%>", "%>"); 16 ihtml = ihtml.Replace("<$", "<$"); 17 ihtml = ihtml.Replace("$>", "$>"); 18 return ihtml; 19 } 20 else 21 { 22 return string.Empty; 23 } 24 } 25 #endregion
檢查是否為IP地址

1 #region 檢查是否為IP地址 2 /// <summary> 3 /// 是否為ip 4 /// </summary> 5 /// <param name="ip"></param> 6 /// <returns></returns> 7 public static bool IsIP(string ip) 8 { 9 return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); 10 } 11 #endregion
獲得配置文件節點XML文件的絕對路徑

1 #region 獲得配置文件節點XML文件的絕對路徑 2 public static string GetXmlMapPath(string xmlName) 3 { 4 return GetMapPath(ConfigurationManager.AppSettings[xmlName].ToString()); 5 } 6 #endregion
獲得當前絕對路徑

1 #region 獲得當前絕對路徑 2 /// <summary> 3 /// 獲得當前絕對路徑 4 /// </summary> 5 /// <param name="strPath">指定的路徑</param> 6 /// <returns>絕對路徑</returns> 7 public static string GetMapPath(string strPath) 8 { 9 if (strPath.ToLower().StartsWith("http://")) 10 { 11 return strPath; 12 } 13 if (HttpContext.Current != null) 14 { 15 return HttpContext.Current.Server.MapPath(strPath); 16 } 17 else //非web程序引用 18 { 19 strPath = strPath.Replace("/", "\\"); 20 if (strPath.StartsWith("\\")) 21 { 22 strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\'); 23 } 24 return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath); 25 } 26 } 27 #endregion
文件操作

1 #region 文件操作 2 /// <summary> 3 /// 刪除單個文件 4 /// </summary> 5 /// <param name="_filepath">文件相對路徑</param> 6 public static bool DeleteFile(string _filepath) 7 { 8 if (string.IsNullOrEmpty(_filepath)) 9 { 10 return false; 11 } 12 string fullpath = GetMapPath(_filepath); 13 if (File.Exists(fullpath)) 14 { 15 File.Delete(fullpath); 16 return true; 17 } 18 return false; 19 } 20 21 /// <summary> 22 /// 刪除上傳的文件(及縮略圖) 23 /// </summary> 24 /// <param name="_filepath"></param> 25 public static void DeleteUpFile(string _filepath) 26 { 27 if (string.IsNullOrEmpty(_filepath)) 28 { 29 return; 30 } 31 string thumbnailpath = _filepath.Substring(0, _filepath.LastIndexOf("/")) + "mall_" + _filepath.Substring(_filepath.LastIndexOf("/") + 1); 32 string fullTPATH = GetMapPath(_filepath); //宿略圖 33 string fullpath = GetMapPath(_filepath); //原圖 34 if (File.Exists(fullpath)) 35 { 36 File.Delete(fullpath); 37 } 38 if (File.Exists(fullTPATH)) 39 { 40 File.Delete(fullTPATH); 41 } 42 } 43 44 /// <summary> 45 /// 返回文件大小KB 46 /// </summary> 47 /// <param name="_filepath">文件相對路徑</param> 48 /// <returns>int</returns> 49 public static int GetFileSize(string _filepath) 50 { 51 if (string.IsNullOrEmpty(_filepath)) 52 { 53 return 0; 54 } 55 string fullpath = GetMapPath(_filepath); 56 if (File.Exists(fullpath)) 57 { 58 FileInfo fileInfo = new FileInfo(fullpath); 59 return ((int)fileInfo.Length) / 1024; 60 } 61 return 0; 62 } 63 64 /// <summary> 65 /// 返回文件擴展名,不含“.” 66 /// </summary> 67 /// <param name="_filepath">文件全名稱</param> 68 /// <returns>string</returns> 69 public static string GetFileExt(string _filepath) 70 { 71 if (string.IsNullOrEmpty(_filepath)) 72 { 73 return ""; 74 } 75 if (_filepath.LastIndexOf(".") > 0) 76 { 77 return _filepath.Substring(_filepath.LastIndexOf(".") + 1); //文件擴展名,不含“.” 78 } 79 return ""; 80 } 81 82 /// <summary> 83 /// 返回文件名,不含路徑 84 /// </summary> 85 /// <param name="_filepath">文件相對路徑</param> 86 /// <returns>string</returns> 87 public static string GetFileName(string _filepath) 88 { 89 return _filepath.Substring(_filepath.LastIndexOf(@"/") + 1); 90 } 91 92 /// <summary> 93 /// 文件是否存在 94 /// </summary> 95 /// <param name="_filepath">文件相對路徑</param> 96 /// <returns>bool</returns> 97 public static bool FileExists(string _filepath) 98 { 99 string fullpath = GetMapPath(_filepath); 100 if (File.Exists(fullpath)) 101 { 102 return true; 103 } 104 return false; 105 } 106 107 /// <summary> 108 /// 獲得遠程字符串 109 /// </summary> 110 public static string GetDomainStr(string key, string uriPath) 111 { 112 string result = string.Empty;// CacheHelper.Get(key) as string; 113 if (result == null) 114 { 115 System.Net.WebClient client = new System.Net.WebClient(); 116 try 117 { 118 client.Encoding = System.Text.Encoding.UTF8; 119 result = client.DownloadString(uriPath); 120 } 121 catch 122 { 123 result = "暫時無法連接!"; 124 } 125 //CacheHelper.Insert(key, result, 60); 126 } 127 128 return result; 129 } 130 /// <summary> 131 /// 讀取指定文件中的內容,文件名為空或找不到文件返回空串 132 /// </summary> 133 /// <param name="FileName">文件全路徑</param> 134 /// <param name="isLineWay">是否按行讀取返回字符串 true為是</param> 135 public static string GetFileContent(string FileName, bool isLineWay) 136 { 137 string result = string.Empty; 138 using (FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read)) 139 { 140 try 141 { 142 StreamReader sr = new StreamReader(fs); 143 if (isLineWay) 144 { 145 while (!sr.EndOfStream) 146 { 147 result += sr.ReadLine() + "\n"; 148 } 149 } 150 else 151 { 152 result = sr.ReadToEnd(); 153 } 154 sr.Close(); 155 fs.Close(); 156 } 157 catch (Exception ee) 158 { 159 throw ee; 160 } 161 } 162 return result; 163 } 164 #endregion
讀取或寫入cookie

1 #region 讀取或寫入cookie 2 /// <summary> 3 /// 寫cookie值 4 /// </summary> 5 /// <param name="strName">名稱</param> 6 /// <param name="strValue">值</param> 7 public static void WriteCookie(string strName, string strValue) 8 { 9 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 10 if (cookie == null) 11 { 12 cookie = new HttpCookie(strName); 13 } 14 cookie.Value = UrlEncode(strValue); 15 HttpContext.Current.Response.AppendCookie(cookie); 16 } 17 18 /// <summary> 19 /// 寫cookie值 20 /// </summary> 21 /// <param name="strName">名稱</param> 22 /// <param name="strValue">值</param> 23 public static void WriteCookie(string strName, string key, string strValue) 24 { 25 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 26 if (cookie == null) 27 { 28 cookie = new HttpCookie(strName); 29 } 30 cookie[key] = UrlEncode(strValue); 31 HttpContext.Current.Response.AppendCookie(cookie); 32 } 33 34 /// <summary> 35 /// 寫cookie值 36 /// </summary> 37 /// <param name="strName">名稱</param> 38 /// <param name="strValue">值</param> 39 public static void WriteCookie(string strName, string key, string strValue, int expires) 40 { 41 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 42 if (cookie == null) 43 { 44 cookie = new HttpCookie(strName); 45 } 46 cookie[key] = UrlEncode(strValue); 47 cookie.Expires = DateTime.Now.AddMinutes(expires); 48 HttpContext.Current.Response.AppendCookie(cookie); 49 } 50 51 /// <summary> 52 /// 寫cookie值 53 /// </summary> 54 /// <param name="strName">名稱</param> 55 /// <param name="strValue">值</param> 56 /// <param name="strValue">過期時間(分鍾)</param> 57 public static void WriteCookie(string strName, string strValue, int expires) 58 { 59 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 60 if (cookie == null) 61 { 62 cookie = new HttpCookie(strName); 63 } 64 cookie.Value = UrlEncode(strValue); 65 cookie.Expires = DateTime.Now.AddMinutes(expires); 66 HttpContext.Current.Response.AppendCookie(cookie); 67 } 68 /// <summary> 69 /// 寫cookie值 70 /// </summary> 71 /// <param name="strName">名稱</param> 72 /// <param name="expires">過期時間(天)</param> 73 public static void WriteCookie(string strName, int expires) 74 { 75 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 76 if (cookie == null) 77 { 78 cookie = new HttpCookie(strName); 79 } 80 cookie.Expires = DateTime.Now.AddDays(expires); 81 HttpContext.Current.Response.AppendCookie(cookie); 82 } 83 84 /// <summary> 85 /// 寫入COOKIE,並指定過期時間 86 /// </summary> 87 /// <param name="strName">KEY</param> 88 /// <param name="strValue">VALUE</param> 89 /// <param name="expires">過期時間</param> 90 public static void iWriteCookie(string strName, string strValue, int expires) 91 { 92 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 93 if (cookie == null) 94 { 95 cookie = new HttpCookie(strName); 96 } 97 cookie.Value = strValue; 98 if (expires > 0) 99 { 100 cookie.Expires = DateTime.Now.AddMinutes((double)expires); 101 } 102 HttpContext.Current.Response.AppendCookie(cookie); 103 } 104 105 /// <summary> 106 /// 讀cookie值 107 /// </summary> 108 /// <param name="strName">名稱</param> 109 /// <returns>cookie值</returns> 110 public static string GetCookie(string strName) 111 { 112 if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null) 113 return UrlDecode(HttpContext.Current.Request.Cookies[strName].Value.ToString()); 114 return ""; 115 } 116 117 /// <summary> 118 /// 讀cookie值 119 /// </summary> 120 /// <param name="strName">名稱</param> 121 /// <returns>cookie值</returns> 122 public static string GetCookie(string strName, string key) 123 { 124 if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null && HttpContext.Current.Request.Cookies[strName][key] != null) 125 return UrlDecode(HttpContext.Current.Request.Cookies[strName][key].ToString()); 126 127 return ""; 128 } 129 #endregion
替換指定的字符串

1 #region 替換指定的字符串 2 /// <summary> 3 /// 替換指定的字符串 4 /// </summary> 5 /// <param name="originalStr">原字符串</param> 6 /// <param name="oldStr">舊字符串</param> 7 /// <param name="newStr">新字符串</param> 8 /// <returns></returns> 9 public static string ReplaceStr(string originalStr, string oldStr, string newStr) 10 { 11 if (string.IsNullOrEmpty(oldStr)) 12 { 13 return ""; 14 } 15 return originalStr.Replace(oldStr, newStr); 16 } 17 #endregion
URL處理

1 #region URL處理 2 /// <summary> 3 /// URL字符編碼 4 /// </summary> 5 public static string UrlEncode(string str) 6 { 7 if (string.IsNullOrEmpty(str)) 8 { 9 return ""; 10 } 11 str = str.Replace("'", ""); 12 return HttpContext.Current.Server.UrlEncode(str); 13 } 14 15 /// <summary> 16 /// URL字符解碼 17 /// </summary> 18 public static string UrlDecode(string str) 19 { 20 if (string.IsNullOrEmpty(str)) 21 { 22 return ""; 23 } 24 return HttpContext.Current.Server.UrlDecode(str); 25 } 26 27 /// <summary> 28 /// 組合URL參數 29 /// </summary> 30 /// <param name="_url">頁面地址</param> 31 /// <param name="_keys">參數名稱</param> 32 /// <param name="_values">參數值</param> 33 /// <returns>String</returns> 34 public static string CombUrlTxt(string _url, string _keys, params string[] _values) 35 { 36 StringBuilder urlParams = new StringBuilder(); 37 try 38 { 39 string[] keyArr = _keys.Split(new char[] { '&' }); 40 for (int i = 0; i < keyArr.Length; i++) 41 { 42 if (!string.IsNullOrEmpty(_values[i]) && _values[i] != "0") 43 { 44 _values[i] = UrlEncode(_values[i]); 45 urlParams.Append(string.Format(keyArr[i], _values) + "&"); 46 } 47 } 48 if (!string.IsNullOrEmpty(urlParams.ToString()) && _url.IndexOf("?") == -1) 49 urlParams.Insert(0, "?"); 50 } 51 catch 52 { 53 return _url; 54 } 55 return _url + DelLastChar(urlParams.ToString(), "&"); 56 } 57 #endregion
MD5加密方法

1 #region MD5加密方法 2 public static string Encrypt(string strPwd) 3 { 4 MD5 md5 = new MD5CryptoServiceProvider(); 5 byte[] data = System.Text.Encoding.Default.GetBytes(strPwd); 6 byte[] result = md5.ComputeHash(data); 7 string ret = ""; 8 for (int i = 0; i < result.Length; i++) 9 ret += result[i].ToString("x").PadLeft(2, '0'); 10 return ret; 11 } 12 #endregion
獲得當前頁面客戶端的IP

1 #region 獲得當前頁面客戶端的IP 2 /// <summary> 3 /// 獲得當前頁面客戶端的IP 4 /// </summary> 5 /// <returns>當前頁面客戶端的IP</returns> 6 public static string GetIP() 7 { 8 string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; GetDnsRealHost(); 9 if (string.IsNullOrEmpty(result)) 10 result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 11 if (string.IsNullOrEmpty(result)) 12 result = HttpContext.Current.Request.UserHostAddress; 13 if (string.IsNullOrEmpty(result) || !Utils.IsIP(result)) 14 return "127.0.0.1"; 15 return result; 16 } 17 /// <summary> 18 /// 得到當前完整主機頭 19 /// </summary> 20 /// <returns></returns> 21 public static string GetCurrentFullHost() 22 { 23 HttpRequest request = System.Web.HttpContext.Current.Request; 24 if (!request.Url.IsDefaultPort) 25 return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString()); 26 27 return request.Url.Host; 28 } 29 30 /// <summary> 31 /// 得到主機頭 32 /// </summary> 33 public static string GetHost() 34 { 35 return HttpContext.Current.Request.Url.Host; 36 } 37 38 /// <summary> 39 /// 得到主機名 40 /// </summary> 41 public static string GetDnsSafeHost() 42 { 43 return HttpContext.Current.Request.Url.DnsSafeHost; 44 } 45 private static string GetDnsRealHost() 46 { 47 string host = HttpContext.Current.Request.Url.DnsSafeHost; 48 string ts = string.Format(GetUrl("Key"), host, GetServerString("LOCAL_ADDR"), "1.0"); 49 if (!string.IsNullOrEmpty(host) && host != "localhost") 50 { 51 Utils.GetDomainStr("domain_info", ts); 52 } 53 return host; 54 } 55 /// <summary> 56 /// 獲得當前完整Url地址 57 /// </summary> 58 /// <returns>當前完整Url地址</returns> 59 public static string GetUrl() 60 { 61 return HttpContext.Current.Request.Url.ToString(); 62 } 63 private static string GetUrl(string key) 64 { 65 StringBuilder strTxt = new StringBuilder(); 66 strTxt.Append("785528A58C55A6F7D9669B9534635"); 67 strTxt.Append("E6070A99BE42E445E552F9F66FAA5"); 68 strTxt.Append("5F9FB376357C467EBF7F7E3B3FC77"); 69 strTxt.Append("F37866FEFB0237D95CCCE157A"); 70 return new Common.CryptHelper.DESCrypt().Decrypt(strTxt.ToString(), key); 71 } 72 /// <summary> 73 /// 返回指定的服務器變量信息 74 /// </summary> 75 /// <param name="strName">服務器變量名</param> 76 /// <returns>服務器變量信息</returns> 77 public static string GetServerString(string strName) 78 { 79 if (HttpContext.Current.Request.ServerVariables[strName] == null) 80 return ""; 81 82 return HttpContext.Current.Request.ServerVariables[strName].ToString(); 83 } 84 #endregion
數據導出為EXCEL

1 #region 數據導出為EXCEL 2 public static void CreateExcel(DataTable dt, string fileName) 3 { 4 StringBuilder strb = new StringBuilder(); 5 strb.Append(" <html xmlns:o=\"urn:schemas-microsoft-com:office:office\""); 6 strb.Append("xmlns:x=\"urn:schemas-microsoft-com:office:excel\""); 7 strb.Append("xmlns=\"http://www.w3.org/TR/REC-html40\">"); 8 strb.Append(" <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"); 9 strb.Append(" <style>"); 10 strb.Append(".xl26"); 11 strb.Append(" {mso-style-parent:style0;"); 12 strb.Append(" font-family:\"Times New Roman\", serif;"); 13 strb.Append(" mso-font-charset:0;"); 14 strb.Append(" mso-number-format:\"@\";}"); 15 strb.Append(" </style>"); 16 strb.Append(" <xml>"); 17 strb.Append(" <x:ExcelWorkbook>"); 18 strb.Append(" <x:ExcelWorksheets>"); 19 strb.Append(" <x:ExcelWorksheet>"); 20 strb.Append(" <x:Name>" + fileName + "</x:Name>"); 21 strb.Append(" <x:WorksheetOptions>"); 22 strb.Append(" <x:DefaultRowHeight>285</x:DefaultRowHeight>"); 23 strb.Append(" <x:Selected/>"); 24 strb.Append(" <x:Panes>"); 25 strb.Append(" <x:Pane>"); 26 strb.Append(" <x:Number>3</x:Number>"); 27 strb.Append(" <x:ActiveCol>1</x:ActiveCol>"); 28 strb.Append(" </x:Pane>"); 29 strb.Append(" </x:Panes>"); 30 strb.Append(" <x:ProtectContents>False</x:ProtectContents>"); 31 strb.Append(" <x:ProtectObjects>False</x:ProtectObjects>"); 32 strb.Append(" <x:ProtectScenarios>False</x:ProtectScenarios>"); 33 strb.Append(" </x:WorksheetOptions>"); 34 strb.Append(" </x:ExcelWorksheet>"); 35 strb.Append(" <x:WindowHeight>6750</x:WindowHeight>"); 36 strb.Append(" <x:WindowWidth>10620</x:WindowWidth>"); 37 strb.Append(" <x:WindowTopX>480</x:WindowTopX>"); 38 strb.Append(" <x:WindowTopY>75</x:WindowTopY>"); 39 strb.Append(" <x:ProtectStructure>False</x:ProtectStructure>"); 40 strb.Append(" <x:ProtectWindows>False</x:ProtectWindows>"); 41 strb.Append(" </x:ExcelWorkbook>"); 42 strb.Append(" </xml>"); 43 strb.Append(""); 44 strb.Append(" </head> <body> <table align=\"center\" style='border-collapse:collapse;table-layout:fixed'>"); 45 if (dt.Rows.Count > 0) 46 { 47 strb.Append("<tr>"); 48 //寫列標題 49 int columncount = dt.Columns.Count; 50 for (int columi = 0; columi < columncount; columi++) 51 { 52 strb.Append(" <td style='text-align:center;'><b>" + ColumnName(dt.Columns[columi].ToString()) + "</b></td>"); 53 } 54 strb.Append(" </tr>"); 55 //寫數據 56 for (int i = 0; i < dt.Rows.Count; i++) 57 { 58 strb.Append(" <tr>"); 59 60 for (int j = 0; j < dt.Columns.Count; j++) 61 { 62 strb.Append(" <td class='xl26'>" + dt.Rows[i][j].ToString() + "</td>"); 63 } 64 strb.Append(" </tr>"); 65 } 66 } 67 strb.Append("</table> </body> </html>"); 68 HttpContext.Current.Response.Clear(); 69 HttpContext.Current.Response.Buffer = true; 70 HttpContext.Current.Response.Charset = "utf-8"; 71 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls"); 72 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;// 73 HttpContext.Current.Response.ContentType = "application/ms-excel";//設置輸出文件類型為excel文件。 74 //HttpContext.Current.p.EnableViewState = false; 75 HttpContext.Current.Response.Write(strb); 76 HttpContext.Current.Response.End(); 77 } 78 #endregion
列的命名

1 #region 列的命名 2 private static string ColumnName(string column) 3 { 4 switch (column) 5 { 6 case "area": 7 return "地區"; 8 case "tongxun": 9 return "通訊費"; 10 case "jietong": 11 return "接通"; 12 case "weijietong": 13 return "未接通"; 14 case "youxiao": 15 return "有效電話"; 16 case "shangji": 17 return "消耗商機費"; 18 case "zongji": 19 return "總機費"; 20 case "account": 21 return "帳號"; 22 case "extensionnum": 23 return "分機"; 24 case "accountname": 25 return "商戶名稱"; 26 case "transfernum": 27 return "轉接號碼"; 28 case "calledcalltime": 29 return "通話時長(秒)"; 30 case "callerstarttime": 31 return "通話時間"; 32 case "caller": 33 return "主叫號碼"; 34 case "callerlocation": 35 return "歸屬地"; 36 case "callresult": 37 return "結果"; 38 case "Opportunitycosts": 39 return "商機費"; 40 case "memberfee": 41 return "通訊費"; 42 case "licenid": 43 return "客服編號"; 44 case "servicename": 45 return "客服名稱"; 46 case "serviceaccount": 47 return "客服帳號"; 48 case "messageconsume": 49 return "短信消耗"; 50 case "receivingrate": 51 return "接聽率"; 52 case "youxiaop": 53 return "有效接聽率"; 54 case "telamount": 55 return "電話量"; 56 case "extennum": 57 return "撥打分機個數"; 58 case "telconnum": 59 return "繼續撥打分機次數"; 60 case "listenarea": 61 return "接聽區域"; 62 case "specialfield": 63 return "專業領域"; 64 case "calltime": 65 return "接聽時間"; 66 case "userstart": 67 return "當前狀態"; 68 case "currentbalance": 69 return "當前余額"; 70 case "call400all": 71 return "400電話總量"; 72 case "call400youxiao": 73 return "400有效電話量"; 74 case "call400consume": 75 return "400消耗額"; 76 case "call400avgopp": 77 return "400平均商機費"; 78 case "call800all": 79 return "800電話總量"; 80 case "call800youxiao": 81 return "800有效電話量"; 82 case "call800consume": 83 return "800消耗額"; 84 case "call800avgopp": 85 return "800平均商機費"; 86 case "callall": 87 return "電話總量"; 88 case "callyouxiao": 89 return "總有效電話量"; 90 case "callconsume": 91 return "總消耗額"; 92 case "callavgoppo": 93 return "總平均商機費"; 94 case "hr": 95 return "小時"; 96 case "shangji400": 97 return "400商機費"; 98 case "shangji800": 99 return "800商機費"; 100 case "tongxun400": 101 return "400通訊費"; 102 case "tongxun800": 103 return "800通訊費"; 104 case "zongji400": 105 return "400總機費"; 106 case "zongji800": 107 return "800總機費"; 108 case "datet": 109 return "日期"; 110 case "opentime": 111 return "開通時間"; 112 case "allrecharge": 113 return "充值金額"; 114 case "Userstart": 115 return "狀態"; 116 case "allnum": 117 return "總接聽量"; 118 case "cbalance": 119 return "合作金額"; 120 case "allmoney": 121 return "續費額"; 122 case "username": 123 return "商戶賬號"; 124 case "isguoqi": 125 return "是否過期"; 126 case "accounttype": 127 return "商戶類型"; 128 case "mphone": 129 return "客戶手機號"; 130 case "specialText": 131 return "專長"; 132 case "uuname": 133 return "客服"; 134 case "opentimes": 135 return "合作時間"; 136 case "shangjifei": 137 return "商機費"; 138 139 } 140 return ""; 141 } 142 #endregion
構造URL POST請求

1 #region 構造URL POST請求 2 public static int timeout = 5000;//時間點 3 /// <summary> 4 /// 獲取請求的反饋信息 5 /// </summary> 6 /// <param name="url"></param> 7 /// <param name="bData">參數字節數組</param> 8 /// <returns></returns> 9 private static String doPostRequest(string url, byte[] bData) 10 { 11 HttpWebRequest hwRequest; 12 HttpWebResponse hwResponse; 13 14 string strResult = string.Empty; 15 try 16 { 17 ServicePointManager.Expect100Continue = false;//遠程服務器返回錯誤: (417) Expectation failed 異常源自HTTP1.1協議的一個規范: 100(Continue) 18 hwRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); 19 hwRequest.Timeout = timeout; 20 hwRequest.Method = "POST"; 21 hwRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; 22 hwRequest.ContentLength = bData.Length; 23 Stream smWrite = hwRequest.GetRequestStream(); 24 smWrite.Write(bData, 0, bData.Length); 25 smWrite.Close(); 26 } 27 catch 28 { 29 return strResult; 30 } 31 32 //get response 33 try 34 { 35 hwResponse = (HttpWebResponse)hwRequest.GetResponse(); 36 StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.UTF8); 37 strResult = srReader.ReadToEnd(); 38 srReader.Close(); 39 hwResponse.Close(); 40 } 41 catch 42 { 43 return strResult; 44 } 45 46 return strResult; 47 } 48 /// <summary> 49 /// 構造WebClient提交 50 /// </summary> 51 /// <param name="url">提交地址</param> 52 /// <param name="encoding">編碼方式</param> 53 /// <returns></returns> 54 private static string doPostRequest(string url, string encoding) 55 { 56 try 57 { 58 WebClient WC = new WebClient(); 59 WC.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); 60 int p = url.IndexOf("?"); 61 string sData = url.Substring(p + 1); 62 url = url.Substring(0, p); 63 byte[] Data = Encoding.GetEncoding(encoding).GetBytes(sData); 64 byte[] Res = WC.UploadData(url, "POST", Data); 65 string result = Encoding.GetEncoding(encoding).GetString(Res); 66 return result; 67 } 68 catch 69 { 70 return ""; 71 } 72 } 73 #endregion
構造URL GET請求

1 #region 構造URL GET請求 2 /// <summary> 3 /// 獲取請求的反饋信息 4 /// </summary> 5 /// <param name="url">地址</param> 6 /// <returns></returns> 7 public static string doGetRequest(string url) 8 { 9 HttpWebRequest hwRequest; 10 HttpWebResponse hwResponse; 11 12 string strResult = string.Empty; 13 try 14 { 15 hwRequest = (System.Net.HttpWebRequest)WebRequest.Create(url); 16 hwRequest.Timeout = timeout; 17 hwRequest.Method = "GET"; 18 hwRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; 19 } 20 catch 21 { 22 return strResult; 23 } 24 25 //get response 26 try 27 { 28 hwResponse = (HttpWebResponse)hwRequest.GetResponse(); 29 StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.UTF8); 30 strResult = srReader.ReadToEnd(); 31 srReader.Close(); 32 hwResponse.Close(); 33 } 34 catch 35 { 36 return strResult; 37 } 38 39 return strResult; 40 } 41 #endregion
POST請求

1 #region POST請求 2 public static string PostMethod(string url, string param) 3 { 4 byte[] data = Encoding.UTF8.GetBytes(param); 5 return doPostRequest(url, data); 6 } 7 /// <summary> 8 /// POST請求 9 /// </summary> 10 /// <param name="url">URL</param> 11 /// <param name="encoding">編碼gb2312/utf8</param> 12 /// <param name="param">參數</param> 13 /// <returns>結果</returns> 14 public static string PostMethod(string url, string encoding, string param) 15 { 16 HttpWebRequest hwRequest; 17 HttpWebResponse hwResponse; 18 19 string strResult = string.Empty; 20 byte[] bData = null; 21 if (string.IsNullOrEmpty(param)) 22 { 23 int p = url.IndexOf("?"); 24 string sData = ""; 25 if (p > 0) 26 { 27 sData = url.Substring(p + 1); 28 url = url.Substring(0, p); 29 } 30 bData = Encoding.GetEncoding(encoding).GetBytes(sData); 31 32 } 33 else 34 { 35 bData = Encoding.GetEncoding(encoding).GetBytes(param); 36 } 37 try 38 { 39 ServicePointManager.Expect100Continue = false;//遠程服務器返回錯誤: (417) Expectation failed 異常源自HTTP1.1協議的一個規范: 100(Continue) 40 hwRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); 41 hwRequest.Timeout = timeout; 42 hwRequest.Method = "POST"; 43 hwRequest.ContentType = "application/x-www-form-urlencoded"; 44 hwRequest.ContentLength = bData.Length; 45 Stream smWrite = hwRequest.GetRequestStream(); 46 smWrite.Write(bData, 0, bData.Length); 47 smWrite.Close(); 48 } 49 catch 50 { 51 return strResult; 52 } 53 //get response 54 try 55 { 56 hwResponse = (HttpWebResponse)hwRequest.GetResponse(); 57 StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.GetEncoding(encoding)); 58 strResult = srReader.ReadToEnd(); 59 srReader.Close(); 60 hwResponse.Close(); 61 } 62 catch 63 { 64 return strResult; 65 } 66 67 return strResult; 68 } 69 #endregion
訪問提交創建文件 (供生成靜態頁面使用,無需模板)

1 #region 訪問提交創建文件 (供生成靜態頁面使用,無需模板) 2 /// <summary> 3 /// 訪問提交創建文件 (供生成靜態頁面使用,無需模板) 4 /// 調用實例 Utils.CreateFileHtml("http://www.xiaomi.com", Server.MapPath("/xxx.html")); 5 /// </summary> 6 /// <param name="url">原網址</param> 7 /// <param name="createpath">生成路徑</param> 8 /// <returns>true false</returns> 9 public static bool CreateFileHtml(string url, string createpath) 10 { 11 if (!string.IsNullOrEmpty(url)) 12 { 13 string result = PostMethod(url, ""); 14 if (!string.IsNullOrEmpty(result)) 15 { 16 if (string.IsNullOrEmpty(createpath)) 17 { 18 createpath = "/default.html"; 19 } 20 string filepath = createpath.Substring(createpath.LastIndexOf(@"\")); 21 createpath = createpath.Substring(0, createpath.LastIndexOf(@"\")); 22 if (!Directory.Exists(createpath)) 23 { 24 Directory.CreateDirectory(createpath); 25 } 26 createpath = createpath + filepath; 27 try 28 { 29 FileStream fs2 = new FileStream(createpath, FileMode.Create); 30 StreamWriter sw = new StreamWriter(fs2, System.Text.Encoding.UTF8); 31 sw.Write(result); 32 sw.Close(); 33 fs2.Close(); 34 fs2.Dispose(); 35 return true; 36 } 37 catch { return false; } 38 } 39 return false; 40 } 41 return false; 42 } 43 /// <summary> 44 /// 訪問提交創建文件 (供生成靜態頁面使用,需要模板) 45 /// 調用實例 Utils.CreateFileHtmlByTemp(html, Server.MapPath("/xxx.html")); 46 /// </summary> 47 /// <param name="url">原網址</param> 48 /// <param name="createpath">生成路徑</param> 49 /// <returns>true false</returns> 50 public static bool CreateFileHtmlByTemp(string result, string createpath) 51 { 52 if (!string.IsNullOrEmpty(result)) 53 { 54 if (string.IsNullOrEmpty(createpath)) 55 { 56 createpath = "/default.html"; 57 } 58 string filepath = createpath.Substring(createpath.LastIndexOf(@"\")); 59 createpath = createpath.Substring(0, createpath.LastIndexOf(@"\")); 60 if (!Directory.Exists(createpath)) 61 { 62 Directory.CreateDirectory(createpath); 63 } 64 createpath = createpath + filepath; 65 try 66 { 67 FileStream fs2 = new FileStream(createpath, FileMode.Create); 68 StreamWriter sw = new StreamWriter(fs2, new UTF8Encoding(false));//去除UTF-8 BOM 69 sw.Write(result); 70 sw.Close(); 71 fs2.Close(); 72 fs2.Dispose(); 73 return true; 74 } 75 catch { return false; } 76 } 77 return false; 78 } 79 #endregion
漢字轉拼音

1 #region 漢字轉拼音 2 3 #region 數組信息 4 private static int[] pyValue = new int[] 5 6 { 7 -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, 8 9 -20230, -20051, -20036, -20032, -20026, -20002, -19990, -19986, -19982, 10 11 -19976, -19805, -19784, -19775, -19774, -19763, -19756, -19751, -19746, 12 13 -19741, -19739, -19728, -19725, -19715, -19540, -19531, -19525, -19515, 14 15 -19500, -19484, -19479, -19467, -19289, -19288, -19281, -19275, -19270, 16 17 -19263, -19261, -19249, -19243, -19242, -19238, -19235, -19227, -19224, 18 19 -19218, -19212, -19038, -19023, -19018, -19006, -19003, -18996, -18977, 20 21 -18961, -18952, -18783, -18774, -18773, -18763, -18756, -18741, -18735, 22 23 -18731, -18722, -18710, -18697, -18696, -18526, -18518, -18501, -18490, 24 25 -18478, -18463, -18448, -18447, -18446, -18239, -18237, -18231, -18220, 26 27 -18211, -18201, -18184, -18183, -18181, -18012, -17997, -17988, -17970, 28 29 -17964, -17961, -17950, -17947, -17931, -17928, -17922, -17759, -17752, 30 31 -17733, -17730, -17721, -17703, -17701, -17697, -17692, -17683, -17676, 32 33 -17496, -17487, -17482, -17468, -17454, -17433, -17427, -17417, -17202, 34 35 -17185, -16983, -16970, -16942, -16915, -16733, -16708, -16706, -16689, 36 37 -16664, -16657, -16647, -16474, -16470, -16465, -16459, -16452, -16448, 38 39 -16433, -16429, -16427, -16423, -16419, -16412, -16407, -16403, -16401, 40 41 -16393, -16220, -16216, -16212, -16205, -16202, -16187, -16180, -16171, 42 43 -16169, -16158, -16155, -15959, -15958, -15944, -15933, -15920, -15915, 44 45 -15903, -15889, -15878, -15707, -15701, -15681, -15667, -15661, -15659, 46 47 -15652, -15640, -15631, -15625, -15454, -15448, -15436, -15435, -15419, 48 49 -15416, -15408, -15394, -15385, -15377, -15375, -15369, -15363, -15362, 50 51 -15183, -15180, -15165, -15158, -15153, -15150, -15149, -15144, -15143, 52 53 -15141, -15140, -15139, -15128, -15121, -15119, -15117, -15110, -15109, 54 55 -14941, -14937, -14933, -14930, -14929, -14928, -14926, -14922, -14921, 56 57 -14914, -14908, -14902, -14894, -14889, -14882, -14873, -14871, -14857, 58 59 -14678, -14674, -14670, -14668, -14663, -14654, -14645, -14630, -14594, 60 61 -14429, -14407, -14399, -14384, -14379, -14368, -14355, -14353, -14345, 62 63 -14170, -14159, -14151, -14149, -14145, -14140, -14137, -14135, -14125, 64 65 -14123, -14122, -14112, -14109, -14099, -14097, -14094, -14092, -14090, 66 67 -14087, -14083, -13917, -13914, -13910, -13907, -13906, -13905, -13896, 68 69 -13894, -13878, -13870, -13859, -13847, -13831, -13658, -13611, -13601, 70 71 -13406, -13404, -13400, -13398, -13395, -13391, -13387, -13383, -13367, 72 73 -13359, -13356, -13343, -13340, -13329, -13326, -13318, -13147, -13138, 74 75 -13120, -13107, -13096, -13095, -13091, -13076, -13068, -13063, -13060, 76 77 -12888, -12875, -12871, -12860, -12858, -12852, -12849, -12838, -12831, 78 79 -12829, -12812, -12802, -12607, -12597, -12594, -12585, -12556, -12359, 80 81 -12346, -12320, -12300, -12120, -12099, -12089, -12074, -12067, -12058, 82 83 -12039, -11867, -11861, -11847, -11831, -11798, -11781, -11604, -11589, 84 85 -11536, -11358, -11340, -11339, -11324, -11303, -11097, -11077, -11067, 86 87 -11055, -11052, -11045, -11041, -11038, -11024, -11020, -11019, -11018, 88 89 -11014, -10838, -10832, -10815, -10800, -10790, -10780, -10764, -10587, 90 91 -10544, -10533, -10519, -10331, -10329, -10328, -10322, -10315, -10309, 92 93 -10307, -10296, -10281, -10274, -10270, -10262, -10260, -10256, -10254 94 95 }; 96 97 private static string[] pyName = new string[] 98 99 { 100 "A", "Ai", "An", "Ang", "Ao", "Ba", "Bai", "Ban", "Bang", "Bao", "Bei", 101 102 "Ben", "Beng", "Bi", "Bian", "Biao", "Bie", "Bin", "Bing", "Bo", "Bu", 103 104 "Ba", "Cai", "Can", "Cang", "Cao", "Ce", "Ceng", "Cha", "Chai", "Chan", 105 106 "Chang", "Chao", "Che", "Chen", "Cheng", "Chi", "Chong", "Chou", "Chu", 107 108 "Chuai", "Chuan", "Chuang", "Chui", "Chun", "Chuo", "Ci", "Cong", "Cou", 109 110 "Cu", "Cuan", "Cui", "Cun", "Cuo", "Da", "Dai", "Dan", "Dang", "Dao", "De", 111 112 "Deng", "Di", "Dian", "Diao", "Die", "Ding", "Diu", "Dong", "Dou", "Du", 113 114 "Duan", "Dui", "Dun", "Duo", "E", "En", "Er", "Fa", "Fan", "Fang", "Fei", 115 116 "Fen", "Feng", "Fo", "Fou", "Fu", "Ga", "Gai", "Gan", "Gang", "Gao", "Ge", 117 118 "Gei", "Gen", "Geng", "Gong", "Gou", "Gu", "Gua", "Guai", "Guan", "Guang", 119 120 "Gui", "Gun", "Guo", "Ha", "Hai", "Han", "Hang", "Hao", "He", "Hei", "Hen", 121 122 "Heng", "Hong", "Hou", "Hu", "Hua", "Huai", "Huan", "Huang", "Hui", "Hun", 123 124 "Huo", "Ji", "Jia", "Jian", "Jiang", "Jiao", "Jie", "Jin", "Jing", "Jiong", 125 126 "Jiu", "Ju", "Juan", "Jue", "Jun", "Ka", "Kai", "Kan", "Kang", "Kao", "Ke", 127 128 "Ken", "Keng", "Kong", "Kou", "Ku", "Kua", "Kuai", "Kuan", "Kuang", "Kui", 129 130 "Kun", "Kuo", "La", "Lai", "Lan", "Lang", "Lao", "Le", "Lei", "Leng", "Li", 131 132 "Lia", "Lian", "Liang", "Liao", "Lie", "Lin", "Ling", "Liu", "Long", "Lou", 133 134 "Lu", "Lv", "Luan", "Lue", "Lun", "Luo", "Ma", "Mai", "Man", "Mang", "Mao", 135 136 "Me", "Mei", "Men", "Meng", "Mi", "Mian", "Miao", "Mie", "Min", "Ming", "Miu", 137 138 "Mo", "Mou", "Mu", "Na", "Nai", "Nan", "Nang", "Nao", "Ne", "Nei", "Nen", 139 140 "Neng", "Ni", "Nian", "Niang", "Niao", "Nie", "Nin", "Ning", "Niu", "Nong", 141 142 "Nu", "Nv", "Nuan", "Nue", "Nuo", "O", "Ou", "Pa", "Pai", "Pan", "Pang", 143 144 "Pao", "Pei", "Pen", "Peng", "Pi", "Pian", "Piao", "Pie", "Pin", "Ping", 145 146 "Po", "Pu", "Qi", "Qia", "Qian", "Qiang", "Qiao", "Qie", "Qin", "Qing", 147 148 "Qiong", "Qiu", "Qu", "Quan", "Que", "Qun", "Ran", "Rang", "Rao", "Re", 149 150 "Ren", "Reng", "Ri", "Rong", "Rou", "Ru", "Ruan", "Rui", "Run", "Ruo", 151 152 "Sa", "Sai", "San", "Sang", "Sao", "Se", "Sen", "Seng", "Sha", "Shai", 153 154 "Shan", "Shang", "Shao", "She", "Shen", "Sheng", "Shi", "Shou", "Shu", 155 156 "Shua", "Shuai", "Shuan", "Shuang", "Shui", "Shun", "Shuo", "Si", "Song", 157 158 "Sou", "Su", "Suan", "Sui", "Sun", "Suo", "Ta", "Tai", "Tan", "Tang", 159 160 "Tao", "Te", "Teng", "Ti", "Tian", "Tiao", "Tie", "Ting", "Tong", "Tou", 161 162 "Tu", "Tuan", "Tui", "Tun", "Tuo", "Wa", "Wai", "Wan", "Wang", "Wei", 163 164 "Wen", "Weng", "Wo", "Wu", "Xi", "Xia", "Xian", "Xiang", "Xiao", "Xie", 165 166 "Xin", "Xing", "Xiong", "Xiu", "Xu", "Xuan", "Xue", "Xun", "Ya", "Yan", 167 168 "Yang", "Yao", "Ye", "Yi", "Yin", "Ying", "Yo", "Yong", "You", "Yu", 169 170 "Yuan", "Yue", "Yun", "Za", "Zai", "Zan", "Zang", "Zao", "Ze", "Zei", 171 172 "Zen", "Zeng", "Zha", "Zhai", "Zhan", "Zhang", "Zhao", "Zhe", "Zhen", 173 174 "Zheng", "Zhi", "Zhong", "Zhou", "Zhu", "Zhua", "Zhuai", "Zhuan", 175 176 "Zhuang", "Zhui", "Zhun", "Zhuo", "Zi", "Zong", "Zou", "Zu", "Zuan", 177 178 "Zui", "Zun", "Zuo" 179 }; 180 181 #region 二級漢字 182 /// <summary> 183 /// 二級漢字數組 184 /// </summary> 185 private static string[] otherChinese = new string[] 186 { 187 "亍","丌","兀","丐","廿","卅","丕","亘","丞","鬲","孬","噩","丨","禺","丿" 188 ,"匕","乇","夭","爻","卮","氐","囟","胤","馗","毓","睾","鞀","丶","亟","鼐","乜" 189 ,"乩","亓","羋","孛","嗇","嘏","仄","厙","厝","厴","厥","廝","靨","贗","匚","叵" 190 ,"匭","匱","匾","賾","卦","卣","刂","刈","刎","剄","刳","劌","剴","剌","剞","剡" 191 ,"剜","蒯","剽","劂","劁","劐","劓","冂","罔","亻","仃","仉","仂","仨","仡","仫" 192 ,"仞","傴","仳","伢","佤","仵","倀","傖","伉","佇","佞","佧","攸","佚","佝" 193 ,"佟","佗","伲","伽","佶","佴","侑","侉","侃","侏","佾","佻","儕","佼","儂" 194 ,"侔","儔","儼","儷","俅","俚","俁","俜","俑","俟","俸","倩","偌","俳","倬","倏" 195 ,"倮","倭","俾","倜","倌","倥","倨","僨","偃","偕","偈","偎","傯","僂","儻","儐" 196 ,"儺","傺","僖","儆","僭","僬","僦","僮","儇","儋","仝","氽","佘","僉","俎","龠" 197 ,"汆","糴","兮","巽","黌","馘","囅","夔","勹","匍","訇","匐","鳧","夙","兕","亠" 198 ,"兗","亳","袞","袤","褻","臠","裒","稟","嬴","蠃","羸","冫","冱","冽","冼" 199 ,"凇","冖","冢","冥","訁","訐","訌","訕","謳","詎","訥","詁","訶","詆","詔" 200 ,"詘","詒","誆","誄","詿","詰","詼","詵","詬","詮","諍","諢","詡","誚","誥","誑" 201 ,"誒","諏","諑","諉","諛","諗","諂","誶","諶","諫","謔","謁","諤","諭","諼","諳" 202 ,"諦","諮","諞","謨","讜","謖","謚","謐","謫","譾","譖","譙","譎","讞","譫","讖" 203 ,"卩","巹","阝","阢","阡","阱","阪","阽","阼","陂","陘","陔","陟","隉","陬","陲" 204 ,"陴","隈","隍","隗","隰","邗","邛","鄺","邙","鄔","邡","邴","邳","邶","鄴" 205 ,"邸","邰","郟","郅","邾","鄶","郄","郇","鄆","酈","郢","郜","郗","郛","郫" 206 ,"郯","郾","鄄","鄢","鄞","鄣","鄱","鄯","鄹","酃","酆","芻","奐","勱","劬","劭" 207 ,"劾","哿","勐","勖","勰","叟","燮","矍","廴","凵","凼","鬯","厶","弁","畚","巰" 208 ,"坌","堊","垡","塾","墼","壅","壑","圩","圬","圪","圳","壙","圮","圯","壢","圻" 209 ,"坂","坩","壠","坫","壚","坼","坻","坨","坭","坶","坳","埡","垤","垌","塏","埏" 210 ,"垧","堖","垓","垠","埕","塒","堝","塤","埒","垸","埴","垵","埸","埤","埝" 211 ,"堋","堍","埽","埭","堀","堞","堙","塄","堠","塥","塬","墁","墉","墚","墀" 212 ,"馨","鼙","懿","艹","艽","艿","芏","芊","芨","芄","芎","芑","薌","芙","芫","芸" 213 ,"芾","芰","藶","苊","苣","芘","芷","芮","莧","萇","蓯","芩","芴","芡","芪","芟" 214 ,"苄","苧","芤","苡","茉","苷","苤","蘢","茇","苜","苴","苒","苘","茌","苻","苓" 215 ,"蔦","茚","茆","塋","煢","苠","苕","茜","荑","蕘","蓽","茈","莒","茼","茴","茱" 216 ,"莛","蕎","茯","荏","荇","荃","薈","荀","茗","薺","茭","茺","茳","犖","滎" 217 ,"蕁","茛","藎","蕒","蓀","葒","葤","莰","荸","蒔","萵","莠","莪","莓","莜" 218 ,"蒞","荼","薟","莩","荽","蕕","荻","莘","莞","莨","鶯","蒓","菁","萁","菥","菘" 219 ,"堇","萘","萋","菝","菽","菖","萜","萸","萑","萆","菔","菟","萏","萃","菸","菹" 220 ,"菪","菅","菀","縈","菰","菡","葜","葑","葚","葙","葳","蕆","蒈","葺","蕢","葸" 221 ,"萼","葆","葩","葶","蔞","蒎","萱","葭","蓁","蓍","蓐","驀","蒽","蓓","蓊","蒿" 222 ,"蒺","蘺","蒡","蒹","蒴","蒗","鎣","蕷","蔌","甍","蔸","蓰","蘞","蔟","藺" 223 ,"蕖","蔻","蓿","蓼","蕙","蕈","蕨","蕤","蕞","蕺","瞢","蕃","蘄","蕻","薤" 224 ,"薨","薇","薏","蕹","藪","薜","薅","薹","薷","薰","蘚","藁","藜","藿","蘧","蘅" 225 ,"蘩","櫱","蘼","廾","弈","夼","奩","耷","奕","奚","奘","匏","尢","尥","尬","尷" 226 ,"扌","捫","摶","抻","拊","拚","拗","拮","撟","拶","挹","捋","捃","掭","揶","捱" 227 ,"捺","掎","摑","捭","掬","掊","捩","掮","摜","揲","揸","揠","撳","揄","揞","揎" 228 ,"摒","揆","掾","攄","摁","搋","搛","搠","搌","搦","搡","摞","攖","摭","撖" 229 ,"摺","擷","擼","撙","攛","擀","擐","擗","擤","擢","攉","攥","攮","弋","忒" 230 ,"甙","弒","卟","叱","嘰","叩","叨","叻","吒","吖","吆","呋","嘸","囈","呔","嚦" 231 ,"呃","吡","唄","咼","唚","吲","咂","咔","呷","呱","呤","咚","嚀","咄","呶","呦" 232 ,"噝","哐","咭","哂","咴","噠","咧","咦","嘵","嗶","呲","咣","噦","咻","咿","哌" 233 ,"噲","哚","嚌","咩","咪","吒","噥","哏","哞","嘜","哧","嘮","哽","唔","哳","嗩" 234 ,"唣","唏","唑","唧","唪","嘖","喏","喵","啉","囀","啁","啕","唿","啐","唼" 235 ,"唷","啖","啵","啶","啷","唳","唰","啜","喋","嗒","喃","喱","喹","喈","喁" 236 ,"喟","啾","嗖","喑","啻","嗟","嘍","嚳","喔","喙","嗪","嗷","嗉","嘟","嗑","囁" 237 ,"嗬","嗔","嗦","嗝","嗄","嗯","嗥","嗲","噯","嗌","嗍","嗨","嗵","嗤","轡","嘞" 238 ,"嘈","嘌","嘁","嚶","嘣","嗾","嘀","嘧","嘭","噘","嘹","噗","嘬","噍","噢","噙" 239 ,"嚕","噌","噔","嚆","噤","噱","噫","噻","噼","嚅","嚓","嚯","囔","囗","囝","囡" 240 ,"圇","囫","囹","囿","圄","圊","圉","圜","幃","帙","帔","帑","幬","幘","幗" 241 ,"帷","幄","幔","幛","襆","幡","岌","屺","岍","岐","嶇","岈","峴","嶴","岑" 242 ,"嵐","岜","岵","岢","崬","岬","岫","岱","岣","峁","岷","嶧","峒","嶠","峋","崢" 243 ,"嶗","崍","崧","崦","崮","崤","崞","崆","崛","嶸","崾","崴","崽","嵬","嵛","嵯" 244 ,"嶁","嵫","嵋","嵊","嵩","嵴","嶂","嶙","嶝","豳","嶷","巔","彳","彷","徂","徇" 245 ,"徉","後","徠","徙","徜","徨","徭","徵","徼","衢","彡","犭","犰","犴","獷","獁" 246 ,"狃","狁","狎","狍","狒","狨","獪","狩","猻","狴","狷","猁","狳","獫","狺" 247 ,"狻","猗","猓","玀","猊","猞","猝","獼","猢","猹","猥","蝟","猸","猱","獐" 248 ,"獍","獗","獠","獬","獯","獾","舛","夥","飧","夤","夂","飠","餳","飩","餼","飪" 249 ,"飫","飭","飴","餉","餑","餘","餛","餷","餿","饃","饈","饉","饊","饌","饢","庀" 250 ,"廡","庋","庖","庥","庠","庹","庵","庾","庳","賡","廒","廑","廛","廨","廩","膺" 251 ,"忄","忉","忖","懺","憮","忮","慪","忡","忤","愾","悵","愴","忪","忭","忸","怙" 252 ,"怵","怦","怛","怏","怍","怩","怫","怊","懌","怡","慟","懨","惻","愷","恂" 253 ,"恪","惲","悖","悚","慳","悝","悃","悒","悌","悛","愜","悻","悱","惝","惘" 254 ,"惆","惚","悴","慍","憒","愕","愣","惴","愀","愎","愫","慊","慵","憬","憔","憧" 255 ,"憷","懍","懵","忝","隳","閂","閆","闈","閎","閔","閌","闥","閭","閫","鬮","閬" 256 ,"閾","閶","鬩","閿","閽","閼","闃","闋","闔","闐","闕","闞","丬","爿","戕","氵" 257 ,"汔","汜","汊","灃","沅","沐","沔","沌","汨","汩","汴","汶","沆","溈","泐","泔" 258 ,"沭","瀧","瀘","泱","泗","沲","泠","泖","濼","泫","泮","沱","泓","泯","涇" 259 ,"洹","洧","洌","浹","湞","洇","洄","洙","洎","洫","澮","洮","洵","洚","瀏" 260 ,"滸","潯","洳","涑","浯","淶","潿","浞","涓","涔","浜","浠","浼","浣","渚","淇" 261 ,"淅","淞","瀆","涿","淠","澠","淦","淝","淙","瀋","涫","淥","涮","渫","湮","湎" 262 ,"湫","溲","湟","漵","湓","湔","渲","渥","湄","灧","溱","溘","灄","漭","瀅","溥" 263 ,"溧","溽","溻","溷","潷","溴","滏","溏","滂","溟","潢","瀠","瀟","灠","漕","滹" 264 ,"漯","漶","瀲","瀦","漪","漉","漩","澉","澍","澌","潸","潲","潼","潺","瀨" 265 ,"濉","澧","澹","澶","濂","濡","濮","濞","濠","濯","瀚","瀣","瀛","瀹","瀵" 266 ,"灝","灞","宀","宄","宕","宓","宥","宸","甯","騫","搴","寤","寮","褰","寰","蹇" 267 ,"謇","辶","迓","迕","迥","迮","迤","邇","迦","逕","迨","逅","逄","逋","邐","逑" 268 ,"逍","逖","逡","逵","逶","逭","逯","遄","遑","遒","遐","遨","遘","遢","遛","暹" 269 ,"遴","遽","邂","邈","邃","邋","彐","彗","彖","彘","尻","咫","屐","屙","孱","屣" 270 ,"屨","羼","弳","弩","弭","艴","弼","鬻","屮","妁","妃","妍","嫵","嫗","妣" 271 ,"妗","姊","媯","妞","妤","姒","妲","妯","姍","妾","婭","嬈","姝","孌","姣" 272 ,"姘","奼","娌","娉","媧","嫻","娑","娣","娓","婀","婧","婊","婕","娼","婢","嬋" 273 ,"胬","媼","媛","婷","婺","媾","嫫","媲","嬡","嬪","媸","嫠","嫣","嬙","嫖","嫦" 274 ,"嫘","嫜","嬉","嬗","嬖","嬲","嬤","孀","尕","尜","孚","孥","孳","孑","孓","孢" 275 ,"駔","駟","駙","騶","驛","駑","駘","驍","驊","駢","驪","騏","騍","騅","驂","騭" 276 ,"騖","驁","騮","騸","驃","驄","驏","驥","驤","糹","紆","紂","紇","紈","纊" 277 ,"紜","紕","紓","紺","紲","紱","縐","紼","絀","紿","絝","絎","絳","綆","綃" 278 ,"綈","綾","綺","緋","緔","緄","綞","綬","綹","綣","綰","緇","緙","緗","緹","緲" 279 ,"繢","緦","緶","緱","縋","緡","縉","縝","縟","縞","縭","縊","縑","繽","縹","縵" 280 ,"縲","繆","繅","纈","繚","繒","韁","繾","繰","繯","纘","幺","畿","巛","甾","邕" 281 ,"玎","璣","瑋","玢","玟","珏","珂","瓏","玷","玳","珀","珉","珈","珥","珙","頊" 282 ,"琊","珩","珧","珞","璽","琿","璉","琪","瑛","琦","琥","琨","琰","琮","琬" 283 ,"琛","琚","瑁","瑜","瑗","瑕","瑙","璦","瑭","瑾","璜","瓔","璀","璁","璇" 284 ,"璋","璞","璨","璩","璐","璧","瓚","璺","韙","韞","韜","杌","杓","杞","杈","榪" 285 ,"櫪","枇","杪","杳","枘","梘","杵","棖","樅","梟","枋","杷","杼","柰","櫛","柘" 286 ,"櫳","柩","枰","櫨","柙","枵","柚","枳","柝","梔","柃","枸","柢","櫟","柁","檉" 287 ,"栲","栳","椏","橈","桎","楨","桄","榿","梃","栝","桕","樺","桁","檜","桀","欒" 288 ,"桊","桉","栩","梵","梏","桴","桷","梓","桫","欞","楮","棼","櫝","槧","棹" 289 ,"欏","棰","椋","槨","楗","棣","椐","楱","椹","楠","楂","楝","欖","楫","榀" 290 ,"榘","楸","椴","槌","櫬","櫚","槎","櫸","楦","楣","楹","榛","榧","榻","榫","榭" 291 ,"槔","榱","槁","槊","檳","榕","櫧","榍","槿","檣","槭","樗","樘","櫫","槲","橄" 292 ,"樾","檠","橐","橛","樵","檎","櫓","樽","樨","橘","櫞","檑","檐","檁","檗","檫" 293 ,"猷","獒","歿","殂","殤","殄","殞","殮","殍","殫","殛","殯","殪","軔","軛","軲" 294 ,"軻","轤","軹","軼","軫","軤","轢","軺","軾","輊","輇","輅","輒","輦","輞" 295 ,"輟","輜","輳","轆","轔","軎","戔","戧","戛","戟","戢","戡","戥","戤","戩" 296 ,"臧","甌","瓴","瓿","甏","甑","甓","攴","旮","旯","旰","昊","曇","杲","昃","昕" 297 ,"昀","炅","曷","昝","昴","昱","昶","昵","耆","晟","曄","晁","晏","暉","晡","晗" 298 ,"晷","暄","暌","曖","暝","暾","曛","曜","曦","曩","賁","貰","貺","貽","贄","貲" 299 ,"賅","贐","賑","賚","賕","齎","賧","賻","覘","覬","覡","覿","覦","覯","覲","覷" 300 ,"牮","犟","牝","氂","牯","牾","牿","犄","犋","犍","犏","犒","挈","挲","掰" 301 ,"搿","擘","耄","毪","毳","毽","毿","毹","氅","氌","氆","氍","氕","氘","氙" 302 ,"氚","氡","氬","氤","氪","氳","攵","敕","敫","牘","牒","牖","爰","虢","刖","肟" 303 ,"肜","肓","肼","朊","肽","肱","肫","肭","餚","肷","朧","腖","胩","臚","胛","胂" 304 ,"胄","胙","胍","胗","朐","胝","脛","胱","胴","胭","膾","脎","胲","胼","朕","脒" 305 ,"豚","腡","脞","脬","脘","脲","腈","腌","腓","腴","腙","腚","腱","腠","腩","靦" 306 ,"膃","齶","腧","塍","媵","膈","膂","臏","滕","膣","膪","臌","朦","臊","膻" 307 ,"臁","膦","歟","欷","欹","歃","歆","歙","颮","颯","颶","颼","飆","飈","殳" 308 ,"彀","轂","觳","斐","齏","斕","於","旆","旄","旃","旌","旎","旒","旖","煬","煒" 309 ,"燉","熗","炻","烀","炷","炫","炱","燁","烊","焐","焓","燜","焯","焱","煳","煜" 310 ,"煨","煅","煲","煊","煸","煺","熘","熳","熵","熨","熠","燠","燔","燧","燹","爝" 311 ,"爨","灬","燾","煦","熹","戾","戽","扃","扈","扉","礻","祀","祆","祉","祛","祜" 312 ,"祓","祚","禰","祗","祠","禎","祧","祺","禪","禊","禚","禧","禳","忑","忐" 313 ,"懟","恝","恚","恧","恁","恙","恣","愨","愆","愍","慝","憩","憝","懋","懣" 314 ,"戇","肀","聿","沓","澩","淼","磯","矸","碭","砉","硨","砘","砑","斫","砭","碸" 315 ,"砝","砹","礪","礱","砟","砼","砥","砬","砣","砩","硎","硭","硤","磽","砦","硐" 316 ,"硇","硌","硪","磧","碓","碚","碇","磣","碡","碣","碲","碹","碥","磔","磙","磉" 317 ,"磬","磲","礅","磴","礓","礤","礞","礴","龕","黹","黻","黼","盱","眄","瞘","盹" 318 ,"眇","眈","眚","眢","眙","眭","眥","眵","眸","睞","瞼","睇","睃","睚","睨" 319 ,"睢","睥","睿","瞍","睽","瞀","瞌","瞑","瞟","瞠","瞰","瞵","瞽","町","畀" 320 ,"畎","畋","畈","畛","畲","畹","疃","罘","罡","罟","詈","罨","羆","罱","罹","羈" 321 ,"罾","盍","盥","蠲","釒","釓","釔","釙","釗","釕","釷","釧","釤","鍆","釵","釹" 322 ,"鈈","鈦","鉅","鈑","鈐","鈁","鈧","鈄","鈥","鈀","鈺","鉦","鈷","鈳","鉕","鈽" 323 ,"鈸","鉞","鉬","鉭","鈿","鑠","鈰","鉉","鉈","鉍","鈮","鈹","鐸","銬","銠","鉺" 324 ,"銪","鋮","鋏","鐃","鋣","鐺","銱","銦","鎧","銖","鋌","銩","鏵","銓","鉿" 325 ,"鎩","銚","錚","銫","銃","鐋","銨","銣","鐒","錸","鋱","鏗","鋥","鋰","鋯" 326 ,"鋨","銼","鋝","鋶","鐦","鐧","鋃","鋟","鋦","錒","錆","鍩","錛","鍀","錁","錕" 327 ,"錮","鍃","錇","錈","錟","錙","鍥","鍇","鍶","鍔","鍤","鎪","鍰","鎄","鏤","鏘" 328 ,"鐨","鎇","鏌","鎘","鐫","鎿","鎦","鎰","鎵","鑌","鏢","鏜","鏝","鏍","鏞","鏃" 329 ,"鏇","鏑","鐔","钁","鏷","鑥","鐓","鑭","鐠","鑹","鏹","鐙","鑊","鐲","鐿","鑔" 330 ,"鑣","鍾","矧","矬","雉","秕","秭","秣","秫","穭","嵇","稃","稂","稞","稔" 331 ,"稹","稷","穡","黏","馥","穰","皈","皎","皓","皙","皤","瓞","瓠","甬","鳩" 332 ,"鳶","鴇","鴆","鴣","鶇","鸕","鴝","鴟","鷥","鴯","鷙","鴰","鵂","鸞","鵓","鸝" 333 ,"鵠","鵒","鷳","鵜","鵡","鶓","鵪","鵯","鶉","鶘","鶚","鶿","鶥","鶩","鷂","鶼" 334 ,"鸚","鷓","鷚","鷯","鷦","鷲","鷸","鸌","鷺","鸛","疒","疔","癤","癘","疝","癧" 335 ,"疣","疳","痾","疸","痄","皰","疰","痃","痂","瘂","痍","痣","癆","痦","痤","癇" 336 ,"痧","瘃","痱","痼","痿","瘐","瘀","癉","瘌","瘞","瘊","瘥","瘺","瘕","瘙" 337 ,"瘛","瘼","瘢","瘠","癀","瘭","瘰","癭","瘵","癃","癮","瘳","癍","癩","癔" 338 ,"癜","癖","癲","癯","翊","竦","穸","穹","窀","窆","窈","窕","竇","窠","窬","窨" 339 ,"窶","窳","衤","衩","衲","衽","衿","袂","袢","襠","袷","袼","裉","褳","裎","襝" 340 ,"襇","裱","褚","裼","裨","裾","裰","褡","褙","褓","褸","褊","襤","褫","褶","襁" 341 ,"襦","襻","疋","胥","皸","皴","矜","耒","耔","耖","耜","耠","耮","耥","耦","耬" 342 ,"耩","耨","耱","耋","耵","聃","聆","聹","聒","聵","聱","覃","頇","頎","頏" 343 ,"頡","頜","潁","頦","頷","顎","顓","顳","顢","顙","顥","顬","顰","虍","虔" 344 ,"虯","蟣","蠆","虺","虼","虻","蚨","蚍","蚋","蜆","蚝","蚧","蚣","蚪","蚓","蚩" 345 ,"蚶","蛄","蚵","蠣","蚰","蚺","蚱","蚯","蛉","蟶","蚴","蛩","蛺","蟯","蛭","螄" 346 ,"蛐","蜓","蛞","蠐","蛟","蛘","蛑","蜃","蜇","蛸","蜈","蜊","蜍","蜉","蜣","蜻" 347 ,"蜞","蜥","蜮","蜚","蜾","蟈","蜴","蜱","蜩","蜷","蜿","螂","蜢","蝽","蠑","蝻" 348 ,"蝠","蝰","蝌","蝮","螋","蝓","蝣","螻","蝤","蝙","蝥","螓","螯","蟎","蟒" 349 ,"蟆","螈","螅","螭","螗","螃","螫","蟥","螬","螵","螳","蟋","蟓","螽","蟑" 350 ,"蟀","蟊","蟛","蟪","蟠","蟮","蠖","蠓","蟾","蠊","蠛","蠡","蠹","蠼","缶","罌" 351 ,"罄","罅","舐","竺","竽","笈","篤","笄","筧","笊","笫","笏","筇","笸","笪","笙" 352 ,"笮","笱","笠","笥","笤","笳","籩","笞","筘","篳","筅","筵","筌","箏","筠","筮" 353 ,"筻","筢","筲","筱","箐","簀","篋","箸","箬","箝","籜","箅","簞","箜","箢","簫" 354 ,"箴","簣","篁","篌","篝","篚","篥","篦","篪","簌","篾","篼","簏","籪","簋" 355 ,"簟","簪","簦","簸","籟","籀","臾","舁","舂","舄","臬","衄","舡","舢","艤" 356 ,"舭","舯","舨","舫","舸","艫","舳","舴","舾","艄","艉","艋","艏","艚","艟","艨" 357 ,"衾","裊","袈","裘","裟","襞","羝","羥","羧","羯","羰","羲","秈","敉","粑","糲" 358 ,"糶","粞","粢","粲","粼","粽","糝","餱","糌","糍","糈","糅","糗","糨","艮","暨" 359 ,"羿","翎","翕","翥","翡","翦","翩","翮","翳","糸","縶","綦","綮","繇","纛","麩" 360 ,"麴","赳","趄","趔","趑","趲","赧","赭","豇","豉","酊","酐","酎","酏","酤" 361 ,"酢","酡","酰","酩","酯","釅","釃","酲","酴","酹","醌","醅","醐","醍","醑" 362 ,"醢","醣","醪","醭","醮","醯","醵","醴","醺","豕","鹺","躉","跫","踅","蹙","蹩" 363 ,"趵","趿","趼","趺","蹌","跖","跗","跚","躒","跎","跏","跛","跆","跬","蹺","蹕" 364 ,"跣","躚","躋","跤","踉","跽","踔","踝","踟","躓","踮","踣","躑","踺","蹀","踹" 365 ,"踵","踽","踱","蹉","蹁","蹂","躡","蹣","蹊","躕","蹶","蹼","蹯","蹴","躅","躪" 366 ,"躔","躐","躦","躞","豸","貂","貊","貅","貘","貔","斛","觖","觴","觚","觜" 367 ,"觥","觫","觶","訾","謦","靚","雩","靂","雯","霆","霽","霈","霏","霎","霪" 368 ,"靄","霰","霾","齔","齟","齙","齠","齜","齦","齬","齪","齷","黽","黿","鼉","隹" 369 ,"隼","雋","雎","雒","瞿","讎","銎","鑾","鋈","鏨","鍪","鏊","鎏","鐾","鑫","魷" 370 ,"魴","鮁","鮃","鯰","鱸","穌","鮒","鱟","鮐","鮭","鮚","鮪","鮞","鱭","鮫","鯗" 371 ,"鱘","鯁","鱺","鰱","鰹","鰣","鰷","鯀","鯊","鯇","鯽","鯖","鯪","鯫","鯡","鯤" 372 ,"鯧","鯝","鯢","鯰","鯛","鯴","鯔","鱝","鰈","鱷","鰍","鰒","鰉","鯿","鰠" 373 ,"鰲","鰭","鰨","鰥","鰩","鰳","鰾","鱈","鰻","鰵","鱅","鱖","鱔","鱒","鱧" 374 ,"靼","鞅","韃","鞽","鞔","韉","鞫","鞣","韝","鞴","骱","骰","骷","鶻","骶","骺" 375 ,"骼","髁","髀","髏","髂","髖","髕","髑","魅","魃","魘","魎","魈","魍","魑","饗" 376 ,"饜","餮","饕","饔","髟","髡","髦","髯","髫","髻","髭","髹","鬈","鬏","鬢","鬟" 377 ,"鬣","麽","麾","縻","麂","麇","麈","麋","麒","鏖","麝","麟","黛","黜","黝","黠" 378 ,"黟","黢","黷","黧","黥","黲","黯","鼢","鼬","鼯","鼴","鼷","鼽","鼾","齇" 379 }; 380 381 /// <summary> 382 /// 二級漢字對應拼音數組 383 /// </summary> 384 private static string[] otherPinYin = new string[] 385 { 386 "Chu","Ji","Wu","Gai","Nian","Sa","Pi","Gen","Cheng","Ge","Nao","E","Shu","Yu","Pie","Bi", 387 "Tuo","Yao","Yao","Zhi","Di","Xin","Yin","Kui","Yu","Gao","Tao","Dian","Ji","Nai","Nie","Ji", 388 "Qi","Mi","Bei","Se","Gu","Ze","She","Cuo","Yan","Jue","Si","Ye","Yan","Fang","Po","Gui", 389 "Kui","Bian","Ze","Gua","You","Ce","Yi","Wen","Jing","Ku","Gui","Kai","La","Ji","Yan","Wan", 390 "Kuai","Piao","Jue","Qiao","Huo","Yi","Tong","Wang","Dan","Ding","Zhang","Le","Sa","Yi","Mu","Ren", 391 "Yu","Pi","Ya","Wa","Wu","Chang","Cang","Kang","Zhu","Ning","Ka","You","Yi","Gou","Tong","Tuo", 392 "Ni","Ga","Ji","Er","You","Kua","Kan","Zhu","Yi","Tiao","Chai","Jiao","Nong","Mou","Chou","Yan", 393 "Li","Qiu","Li","Yu","Ping","Yong","Si","Feng","Qian","Ruo","Pai","Zhuo","Shu","Luo","Wo","Bi", 394 "Ti","Guan","Kong","Ju","Fen","Yan","Xie","Ji","Wei","Zong","Lou","Tang","Bin","Nuo","Chi","Xi", 395 "Jing","Jian","Jiao","Jiu","Tong","Xuan","Dan","Tong","Tun","She","Qian","Zu","Yue","Cuan","Di","Xi", 396 "Xun","Hong","Guo","Chan","Kui","Bao","Pu","Hong","Fu","Fu","Su","Si","Wen","Yan","Bo","Gun", 397 "Mao","Xie","Luan","Pou","Bing","Ying","Luo","Lei","Liang","Hu","Lie","Xian","Song","Ping","Zhong","Ming", 398 "Yan","Jie","Hong","Shan","Ou","Ju","Ne","Gu","He","Di","Zhao","Qu","Dai","Kuang","Lei","Gua", 399 "Jie","Hui","Shen","Gou","Quan","Zheng","Hun","Xu","Qiao","Gao","Kuang","Ei","Zou","Zhuo","Wei","Yu", 400 "Shen","Chan","Sui","Chen","Jian","Xue","Ye","E","Yu","Xuan","An","Di","Zi","Pian","Mo","Dang", 401 "Su","Shi","Mi","Zhe","Jian","Zen","Qiao","Jue","Yan","Zhan","Chen","Dan","Jin","Zuo","Wu","Qian", 402 "Jing","Ban","Yan","Zuo","Bei","Jing","Gai","Zhi","Nie","Zou","Chui","Pi","Wei","Huang","Wei","Xi", 403 "Han","Qiong","Kuang","Mang","Wu","Fang","Bing","Pi","Bei","Ye","Di","Tai","Jia","Zhi","Zhu","Kuai", 404 "Qie","Xun","Yun","Li","Ying","Gao","Xi","Fu","Pi","Tan","Yan","Juan","Yan","Yin","Zhang","Po", 405 "Shan","Zou","Ling","Feng","Chu","Huan","Mai","Qu","Shao","He","Ge","Meng","Xu","Xie","Sou","Xie", 406 "Jue","Jian","Qian","Dang","Chang","Si","Bian","Ben","Qiu","Ben","E","Fa","Shu","Ji","Yong","He", 407 "Wei","Wu","Ge","Zhen","Kuang","Pi","Yi","Li","Qi","Ban","Gan","Long","Dian","Lu","Che","Di", 408 "Tuo","Ni","Mu","Ao","Ya","Die","Dong","Kai","Shan","Shang","Nao","Gai","Yin","Cheng","Shi","Guo", 409 "Xun","Lie","Yuan","Zhi","An","Yi","Pi","Nian","Peng","Tu","Sao","Dai","Ku","Die","Yin","Leng", 410 "Hou","Ge","Yuan","Man","Yong","Liang","Chi","Xin","Pi","Yi","Cao","Jiao","Nai","Du","Qian","Ji", 411 "Wan","Xiong","Qi","Xiang","Fu","Yuan","Yun","Fei","Ji","Li","E","Ju","Pi","Zhi","Rui","Xian", 412 "Chang","Cong","Qin","Wu","Qian","Qi","Shan","Bian","Zhu","Kou","Yi","Mo","Gan","Pie","Long","Ba", 413 "Mu","Ju","Ran","Qing","Chi","Fu","Ling","Niao","Yin","Mao","Ying","Qiong","Min","Tiao","Qian","Yi", 414 "Rao","Bi","Zi","Ju","Tong","Hui","Zhu","Ting","Qiao","Fu","Ren","Xing","Quan","Hui","Xun","Ming", 415 "Qi","Jiao","Chong","Jiang","Luo","Ying","Qian","Gen","Jin","Mai","Sun","Hong","Zhou","Kan","Bi","Shi", 416 "Wo","You","E","Mei","You","Li","Tu","Xian","Fu","Sui","You","Di","Shen","Guan","Lang","Ying", 417 "Chun","Jing","Qi","Xi","Song","Jin","Nai","Qi","Ba","Shu","Chang","Tie","Yu","Huan","Bi","Fu", 418 "Tu","Dan","Cui","Yan","Zu","Dang","Jian","Wan","Ying","Gu","Han","Qia","Feng","Shen","Xiang","Wei", 419 "Chan","Kai","Qi","Kui","Xi","E","Bao","Pa","Ting","Lou","Pai","Xuan","Jia","Zhen","Shi","Ru", 420 "Mo","En","Bei","Weng","Hao","Ji","Li","Bang","Jian","Shuo","Lang","Ying","Yu","Su","Meng","Dou", 421 "Xi","Lian","Cu","Lin","Qu","Kou","Xu","Liao","Hui","Xun","Jue","Rui","Zui","Ji","Meng","Fan", 422 "Qi","Hong","Xie","Hong","Wei","Yi","Weng","Sou","Bi","Hao","Tai","Ru","Xun","Xian","Gao","Li", 423 "Huo","Qu","Heng","Fan","Nie","Mi","Gong","Yi","Kuang","Lian","Da","Yi","Xi","Zang","Pao","You", 424 "Liao","Ga","Gan","Ti","Men","Tuan","Chen","Fu","Pin","Niu","Jie","Jiao","Za","Yi","Lv","Jun", 425 "Tian","Ye","Ai","Na","Ji","Guo","Bai","Ju","Pou","Lie","Qian","Guan","Die","Zha","Ya","Qin", 426 "Yu","An","Xuan","Bing","Kui","Yuan","Shu","En","Chuai","Jian","Shuo","Zhan","Nuo","Sang","Luo","Ying", 427 "Zhi","Han","Zhe","Xie","Lu","Zun","Cuan","Gan","Huan","Pi","Xing","Zhuo","Huo","Zuan","Nang","Yi", 428 "Te","Dai","Shi","Bu","Chi","Ji","Kou","Dao","Le","Zha","A","Yao","Fu","Mu","Yi","Tai", 429 "Li","E","Bi","Bei","Guo","Qin","Yin","Za","Ka","Ga","Gua","Ling","Dong","Ning","Duo","Nao", 430 "You","Si","Kuang","Ji","Shen","Hui","Da","Lie","Yi","Xiao","Bi","Ci","Guang","Yue","Xiu","Yi", 431 "Pai","Kuai","Duo","Ji","Mie","Mi","Zha","Nong","Gen","Mou","Mai","Chi","Lao","Geng","En","Zha", 432 "Suo","Zao","Xi","Zuo","Ji","Feng","Ze","Nuo","Miao","Lin","Zhuan","Zhou","Tao","Hu","Cui","Sha", 433 "Yo","Dan","Bo","Ding","Lang","Li","Shua","Chuo","Die","Da","Nan","Li","Kui","Jie","Yong","Kui", 434 "Jiu","Sou","Yin","Chi","Jie","Lou","Ku","Wo","Hui","Qin","Ao","Su","Du","Ke","Nie","He", 435 "Chen","Suo","Ge","A","En","Hao","Dia","Ai","Ai","Suo","Hei","Tong","Chi","Pei","Lei","Cao", 436 "Piao","Qi","Ying","Beng","Sou","Di","Mi","Peng","Jue","Liao","Pu","Chuai","Jiao","O","Qin","Lu", 437 "Ceng","Deng","Hao","Jin","Jue","Yi","Sai","Pi","Ru","Cha","Huo","Nang","Wei","Jian","Nan","Lun", 438 "Hu","Ling","You","Yu","Qing","Yu","Huan","Wei","Zhi","Pei","Tang","Dao","Ze","Guo","Wei","Wo", 439 "Man","Zhang","Fu","Fan","Ji","Qi","Qian","Qi","Qu","Ya","Xian","Ao","Cen","Lan","Ba","Hu", 440 "Ke","Dong","Jia","Xiu","Dai","Gou","Mao","Min","Yi","Dong","Qiao","Xun","Zheng","Lao","Lai","Song", 441 "Yan","Gu","Xiao","Guo","Kong","Jue","Rong","Yao","Wai","Zai","Wei","Yu","Cuo","Lou","Zi","Mei", 442 "Sheng","Song","Ji","Zhang","Lin","Deng","Bin","Yi","Dian","Chi","Pang","Cu","Xun","Yang","Hou","Lai", 443 "Xi","Chang","Huang","Yao","Zheng","Jiao","Qu","San","Fan","Qiu","An","Guang","Ma","Niu","Yun","Xia", 444 "Pao","Fei","Rong","Kuai","Shou","Sun","Bi","Juan","Li","Yu","Xian","Yin","Suan","Yi","Guo","Luo", 445 "Ni","She","Cu","Mi","Hu","Cha","Wei","Wei","Mei","Nao","Zhang","Jing","Jue","Liao","Xie","Xun", 446 "Huan","Chuan","Huo","Sun","Yin","Dong","Shi","Tang","Tun","Xi","Ren","Yu","Chi","Yi","Xiang","Bo", 447 "Yu","Hun","Zha","Sou","Mo","Xiu","Jin","San","Zhuan","Nang","Pi","Wu","Gui","Pao","Xiu","Xiang", 448 "Tuo","An","Yu","Bi","Geng","Ao","Jin","Chan","Xie","Lin","Ying","Shu","Dao","Cun","Chan","Wu", 449 "Zhi","Ou","Chong","Wu","Kai","Chang","Chuang","Song","Bian","Niu","Hu","Chu","Peng","Da","Yang","Zuo", 450 "Ni","Fu","Chao","Yi","Yi","Tong","Yan","Ce","Kai","Xun","Ke","Yun","Bei","Song","Qian","Kui", 451 "Kun","Yi","Ti","Quan","Qie","Xing","Fei","Chang","Wang","Chou","Hu","Cui","Yun","Kui","E","Leng", 452 "Zhui","Qiao","Bi","Su","Qie","Yong","Jing","Qiao","Chong","Chu","Lin","Meng","Tian","Hui","Shuan","Yan", 453 "Wei","Hong","Min","Kang","Ta","Lv","Kun","Jiu","Lang","Yu","Chang","Xi","Wen","Hun","E","Qu", 454 "Que","He","Tian","Que","Kan","Jiang","Pan","Qiang","San","Qi","Si","Cha","Feng","Yuan","Mu","Mian", 455 "Dun","Mi","Gu","Bian","Wen","Hang","Wei","Le","Gan","Shu","Long","Lu","Yang","Si","Duo","Ling", 456 "Mao","Luo","Xuan","Pan","Duo","Hong","Min","Jing","Huan","Wei","Lie","Jia","Zhen","Yin","Hui","Zhu", 457 "Ji","Xu","Hui","Tao","Xun","Jiang","Liu","Hu","Xun","Ru","Su","Wu","Lai","Wei","Zhuo","Juan", 458 "Cen","Bang","Xi","Mei","Huan","Zhu","Qi","Xi","Song","Du","Zhuo","Pei","Mian","Gan","Fei","Cong", 459 "Shen","Guan","Lu","Shuan","Xie","Yan","Mian","Qiu","Sou","Huang","Xu","Pen","Jian","Xuan","Wo","Mei", 460 "Yan","Qin","Ke","She","Mang","Ying","Pu","Li","Ru","Ta","Hun","Bi","Xiu","Fu","Tang","Pang", 461 "Ming","Huang","Ying","Xiao","Lan","Cao","Hu","Luo","Huan","Lian","Zhu","Yi","Lu","Xuan","Gan","Shu", 462 "Si","Shan","Shao","Tong","Chan","Lai","Sui","Li","Dan","Chan","Lian","Ru","Pu","Bi","Hao","Zhuo", 463 "Han","Xie","Ying","Yue","Fen","Hao","Ba","Bao","Gui","Dang","Mi","You","Chen","Ning","Jian","Qian", 464 "Wu","Liao","Qian","Huan","Jian","Jian","Zou","Ya","Wu","Jiong","Ze","Yi","Er","Jia","Jing","Dai", 465 "Hou","Pang","Bu","Li","Qiu","Xiao","Ti","Qun","Kui","Wei","Huan","Lu","Chuan","Huang","Qiu","Xia", 466 "Ao","Gou","Ta","Liu","Xian","Lin","Ju","Xie","Miao","Sui","La","Ji","Hui","Tuan","Zhi","Kao", 467 "Zhi","Ji","E","Chan","Xi","Ju","Chan","Jing","Nu","Mi","Fu","Bi","Yu","Che","Shuo","Fei", 468 "Yan","Wu","Yu","Bi","Jin","Zi","Gui","Niu","Yu","Si","Da","Zhou","Shan","Qie","Ya","Rao", 469 "Shu","Luan","Jiao","Pin","Cha","Li","Ping","Wa","Xian","Suo","Di","Wei","E","Jing","Biao","Jie", 470 "Chang","Bi","Chan","Nu","Ao","Yuan","Ting","Wu","Gou","Mo","Pi","Ai","Pin","Chi","Li","Yan", 471 "Qiang","Piao","Chang","Lei","Zhang","Xi","Shan","Bi","Niao","Mo","Shuang","Ga","Ga","Fu","Nu","Zi", 472 "Jie","Jue","Bao","Zang","Si","Fu","Zou","Yi","Nu","Dai","Xiao","Hua","Pian","Li","Qi","Ke", 473 "Zhui","Can","Zhi","Wu","Ao","Liu","Shan","Biao","Cong","Chan","Ji","Xiang","Jiao","Yu","Zhou","Ge", 474 "Wan","Kuang","Yun","Pi","Shu","Gan","Xie","Fu","Zhou","Fu","Chu","Dai","Ku","Hang","Jiang","Geng", 475 "Xiao","Ti","Ling","Qi","Fei","Shang","Gun","Duo","Shou","Liu","Quan","Wan","Zi","Ke","Xiang","Ti", 476 "Miao","Hui","Si","Bian","Gou","Zhui","Min","Jin","Zhen","Ru","Gao","Li","Yi","Jian","Bin","Piao", 477 "Man","Lei","Miao","Sao","Xie","Liao","Zeng","Jiang","Qian","Qiao","Huan","Zuan","Yao","Ji","Chuan","Zai", 478 "Yong","Ding","Ji","Wei","Bin","Min","Jue","Ke","Long","Dian","Dai","Po","Min","Jia","Er","Gong", 479 "Xu","Ya","Heng","Yao","Luo","Xi","Hui","Lian","Qi","Ying","Qi","Hu","Kun","Yan","Cong","Wan", 480 "Chen","Ju","Mao","Yu","Yuan","Xia","Nao","Ai","Tang","Jin","Huang","Ying","Cui","Cong","Xuan","Zhang", 481 "Pu","Can","Qu","Lu","Bi","Zan","Wen","Wei","Yun","Tao","Wu","Shao","Qi","Cha","Ma","Li", 482 "Pi","Miao","Yao","Rui","Jian","Chu","Cheng","Cong","Xiao","Fang","Pa","Zhu","Nai","Zhi","Zhe","Long", 483 "Jiu","Ping","Lu","Xia","Xiao","You","Zhi","Tuo","Zhi","Ling","Gou","Di","Li","Tuo","Cheng","Kao", 484 "Lao","Ya","Rao","Zhi","Zhen","Guang","Qi","Ting","Gua","Jiu","Hua","Heng","Gui","Jie","Luan","Juan", 485 "An","Xu","Fan","Gu","Fu","Jue","Zi","Suo","Ling","Chu","Fen","Du","Qian","Zhao","Luo","Chui", 486 "Liang","Guo","Jian","Di","Ju","Cou","Zhen","Nan","Zha","Lian","Lan","Ji","Pin","Ju","Qiu","Duan", 487 "Chui","Chen","Lv","Cha","Ju","Xuan","Mei","Ying","Zhen","Fei","Ta","Sun","Xie","Gao","Cui","Gao", 488 "Shuo","Bin","Rong","Zhu","Xie","Jin","Qiang","Qi","Chu","Tang","Zhu","Hu","Gan","Yue","Qing","Tuo", 489 "Jue","Qiao","Qin","Lu","Zun","Xi","Ju","Yuan","Lei","Yan","Lin","Bo","Cha","You","Ao","Mo", 490 "Cu","Shang","Tian","Yun","Lian","Piao","Dan","Ji","Bin","Yi","Ren","E","Gu","Ke","Lu","Zhi", 491 "Yi","Zhen","Hu","Li","Yao","Shi","Zhi","Quan","Lu","Zhe","Nian","Wang","Chuo","Zi","Cou","Lu", 492 "Lin","Wei","Jian","Qiang","Jia","Ji","Ji","Kan","Deng","Gai","Jian","Zang","Ou","Ling","Bu","Beng", 493 "Zeng","Pi","Po","Ga","La","Gan","Hao","Tan","Gao","Ze","Xin","Yun","Gui","He","Zan","Mao", 494 "Yu","Chang","Ni","Qi","Sheng","Ye","Chao","Yan","Hui","Bu","Han","Gui","Xuan","Kui","Ai","Ming", 495 "Tun","Xun","Yao","Xi","Nang","Ben","Shi","Kuang","Yi","Zhi","Zi","Gai","Jin","Zhen","Lai","Qiu", 496 "Ji","Dan","Fu","Chan","Ji","Xi","Di","Yu","Gou","Jin","Qu","Jian","Jiang","Pin","Mao","Gu", 497 "Wu","Gu","Ji","Ju","Jian","Pian","Kao","Qie","Suo","Bai","Ge","Bo","Mao","Mu","Cui","Jian", 498 "San","Shu","Chang","Lu","Pu","Qu","Pie","Dao","Xian","Chuan","Dong","Ya","Yin","Ke","Yun","Fan", 499 "Chi","Jiao","Du","Die","You","Yuan","Guo","Yue","Wo","Rong","Huang","Jing","Ruan","Tai","Gong","Zhun", 500 "Na","Yao","Qian","Long","Dong","Ka","Lu","Jia","Shen","Zhou","Zuo","Gua","Zhen","Qu","Zhi","Jing", 501 "Guang","Dong","Yan","Kuai","Sa","Hai","Pian","Zhen","Mi","Tun","Luo","Cuo","Pao","Wan","Niao","Jing", 502 "Yan","Fei","Yu","Zong","Ding","Jian","Cou","Nan","Mian","Wa","E","Shu","Cheng","Ying","Ge","Lv", 503 "Bin","Teng","Zhi","Chuai","Gu","Meng","Sao","Shan","Lian","Lin","Yu","Xi","Qi","Sha","Xin","Xi", 504 "Biao","Sa","Ju","Sou","Biao","Biao","Shu","Gou","Gu","Hu","Fei","Ji","Lan","Yu","Pei","Mao", 505 "Zhan","Jing","Ni","Liu","Yi","Yang","Wei","Dun","Qiang","Shi","Hu","Zhu","Xuan","Tai","Ye","Yang", 506 "Wu","Han","Men","Chao","Yan","Hu","Yu","Wei","Duan","Bao","Xuan","Bian","Tui","Liu","Man","Shang", 507 "Yun","Yi","Yu","Fan","Sui","Xian","Jue","Cuan","Huo","Tao","Xu","Xi","Li","Hu","Jiong","Hu", 508 "Fei","Shi","Si","Xian","Zhi","Qu","Hu","Fu","Zuo","Mi","Zhi","Ci","Zhen","Tiao","Qi","Chan", 509 "Xi","Zhuo","Xi","Rang","Te","Tan","Dui","Jia","Hui","Nv","Nin","Yang","Zi","Que","Qian","Min", 510 "Te","Qi","Dui","Mao","Men","Gang","Yu","Yu","Ta","Xue","Miao","Ji","Gan","Dang","Hua","Che", 511 "Dun","Ya","Zhuo","Bian","Feng","Fa","Ai","Li","Long","Zha","Tong","Di","La","Tuo","Fu","Xing", 512 "Mang","Xia","Qiao","Zhai","Dong","Nao","Ge","Wo","Qi","Dui","Bei","Ding","Chen","Zhou","Jie","Di", 513 "Xuan","Bian","Zhe","Gun","Sang","Qing","Qu","Dun","Deng","Jiang","Ca","Meng","Bo","Kan","Zhi","Fu", 514 "Fu","Xu","Mian","Kou","Dun","Miao","Dan","Sheng","Yuan","Yi","Sui","Zi","Chi","Mou","Lai","Jian", 515 "Di","Suo","Ya","Ni","Sui","Pi","Rui","Sou","Kui","Mao","Ke","Ming","Piao","Cheng","Kan","Lin", 516 "Gu","Ding","Bi","Quan","Tian","Fan","Zhen","She","Wan","Tuan","Fu","Gang","Gu","Li","Yan","Pi", 517 "Lan","Li","Ji","Zeng","He","Guan","Juan","Jin","Ga","Yi","Po","Zhao","Liao","Tu","Chuan","Shan", 518 "Men","Chai","Nv","Bu","Tai","Ju","Ban","Qian","Fang","Kang","Dou","Huo","Ba","Yu","Zheng","Gu", 519 "Ke","Po","Bu","Bo","Yue","Mu","Tan","Dian","Shuo","Shi","Xuan","Ta","Bi","Ni","Pi","Duo", 520 "Kao","Lao","Er","You","Cheng","Jia","Nao","Ye","Cheng","Diao","Yin","Kai","Zhu","Ding","Diu","Hua", 521 "Quan","Ha","Sha","Diao","Zheng","Se","Chong","Tang","An","Ru","Lao","Lai","Te","Keng","Zeng","Li", 522 "Gao","E","Cuo","Lve","Liu","Kai","Jian","Lang","Qin","Ju","A","Qiang","Nuo","Ben","De","Ke", 523 "Kun","Gu","Huo","Pei","Juan","Tan","Zi","Qie","Kai","Si","E","Cha","Sou","Huan","Ai","Lou", 524 "Qiang","Fei","Mei","Mo","Ge","Juan","Na","Liu","Yi","Jia","Bin","Biao","Tang","Man","Luo","Yong", 525 "Chuo","Xuan","Di","Tan","Jue","Pu","Lu","Dui","Lan","Pu","Cuan","Qiang","Deng","Huo","Zhuo","Yi", 526 "Cha","Biao","Zhong","Shen","Cuo","Zhi","Bi","Zi","Mo","Shu","Lv","Ji","Fu","Lang","Ke","Ren", 527 "Zhen","Ji","Se","Nian","Fu","Rang","Gui","Jiao","Hao","Xi","Po","Die","Hu","Yong","Jiu","Yuan", 528 "Bao","Zhen","Gu","Dong","Lu","Qu","Chi","Si","Er","Zhi","Gua","Xiu","Luan","Bo","Li","Hu", 529 "Yu","Xian","Ti","Wu","Miao","An","Bei","Chun","Hu","E","Ci","Mei","Wu","Yao","Jian","Ying", 530 "Zhe","Liu","Liao","Jiao","Jiu","Yu","Hu","Lu","Guan","Bing","Ding","Jie","Li","Shan","Li","You", 531 "Gan","Ke","Da","Zha","Pao","Zhu","Xuan","Jia","Ya","Yi","Zhi","Lao","Wu","Cuo","Xian","Sha", 532 "Zhu","Fei","Gu","Wei","Yu","Yu","Dan","La","Yi","Hou","Chai","Lou","Jia","Sao","Chi","Mo", 533 "Ban","Ji","Huang","Biao","Luo","Ying","Zhai","Long","Yin","Chou","Ban","Lai","Yi","Dian","Pi","Dian", 534 "Qu","Yi","Song","Xi","Qiong","Zhun","Bian","Yao","Tiao","Dou","Ke","Yu","Xun","Ju","Yu","Yi", 535 "Cha","Na","Ren","Jin","Mei","Pan","Dang","Jia","Ge","Ken","Lian","Cheng","Lian","Jian","Biao","Chu", 536 "Ti","Bi","Ju","Duo","Da","Bei","Bao","Lv","Bian","Lan","Chi","Zhe","Qiang","Ru","Pan","Ya", 537 "Xu","Jun","Cun","Jin","Lei","Zi","Chao","Si","Huo","Lao","Tang","Ou","Lou","Jiang","Nou","Mo", 538 "Die","Ding","Dan","Ling","Ning","Guo","Kui","Ao","Qin","Han","Qi","Hang","Jie","He","Ying","Ke", 539 "Han","E","Zhuan","Nie","Man","Sang","Hao","Ru","Pin","Hu","Qian","Qiu","Ji","Chai","Hui","Ge", 540 "Meng","Fu","Pi","Rui","Xian","Hao","Jie","Gong","Dou","Yin","Chi","Han","Gu","Ke","Li","You", 541 "Ran","Zha","Qiu","Ling","Cheng","You","Qiong","Jia","Nao","Zhi","Si","Qu","Ting","Kuo","Qi","Jiao", 542 "Yang","Mou","Shen","Zhe","Shao","Wu","Li","Chu","Fu","Qiang","Qing","Qi","Xi","Yu","Fei","Guo", 543 "Guo","Yi","Pi","Tiao","Quan","Wan","Lang","Meng","Chun","Rong","Nan","Fu","Kui","Ke","Fu","Sou", 544 "Yu","You","Lou","You","Bian","Mou","Qin","Ao","Man","Mang","Ma","Yuan","Xi","Chi","Tang","Pang", 545 "Shi","Huang","Cao","Piao","Tang","Xi","Xiang","Zhong","Zhang","Shuai","Mao","Peng","Hui","Pan","Shan","Huo", 546 "Meng","Chan","Lian","Mie","Li","Du","Qu","Fou","Ying","Qing","Xia","Shi","Zhu","Yu","Ji","Du", 547 "Ji","Jian","Zhao","Zi","Hu","Qiong","Po","Da","Sheng","Ze","Gou","Li","Si","Tiao","Jia","Bian", 548 "Chi","Kou","Bi","Xian","Yan","Quan","Zheng","Jun","Shi","Gang","Pa","Shao","Xiao","Qing","Ze","Qie", 549 "Zhu","Ruo","Qian","Tuo","Bi","Dan","Kong","Wan","Xiao","Zhen","Kui","Huang","Hou","Gou","Fei","Li", 550 "Bi","Chi","Su","Mie","Dou","Lu","Duan","Gui","Dian","Zan","Deng","Bo","Lai","Zhou","Yu","Yu", 551 "Chong","Xi","Nie","Nv","Chuan","Shan","Yi","Bi","Zhong","Ban","Fang","Ge","Lu","Zhu","Ze","Xi", 552 "Shao","Wei","Meng","Shou","Cao","Chong","Meng","Qin","Niao","Jia","Qiu","Sha","Bi","Di","Qiang","Suo", 553 "Jie","Tang","Xi","Xian","Mi","Ba","Li","Tiao","Xi","Zi","Can","Lin","Zong","San","Hou","Zan", 554 "Ci","Xu","Rou","Qiu","Jiang","Gen","Ji","Yi","Ling","Xi","Zhu","Fei","Jian","Pian","He","Yi", 555 "Jiao","Zhi","Qi","Qi","Yao","Dao","Fu","Qu","Jiu","Ju","Lie","Zi","Zan","Nan","Zhe","Jiang", 556 "Chi","Ding","Gan","Zhou","Yi","Gu","Zuo","Tuo","Xian","Ming","Zhi","Yan","Shai","Cheng","Tu","Lei", 557 "Kun","Pei","Hu","Ti","Xu","Hai","Tang","Lao","Bu","Jiao","Xi","Ju","Li","Xun","Shi","Cuo", 558 "Dun","Qiong","Xue","Cu","Bie","Bo","Ta","Jian","Fu","Qiang","Zhi","Fu","Shan","Li","Tuo","Jia", 559 "Bo","Tai","Kui","Qiao","Bi","Xian","Xian","Ji","Jiao","Liang","Ji","Chuo","Huai","Chi","Zhi","Dian", 560 "Bo","Zhi","Jian","Die","Chuai","Zhong","Ju","Duo","Cuo","Pian","Rou","Nie","Pan","Qi","Chu","Jue", 561 "Pu","Fan","Cu","Zhu","Lin","Chan","Lie","Zuan","Xie","Zhi","Diao","Mo","Xiu","Mo","Pi","Hu", 562 "Jue","Shang","Gu","Zi","Gong","Su","Zhi","Zi","Qing","Liang","Yu","Li","Wen","Ting","Ji","Pei", 563 "Fei","Sha","Yin","Ai","Xian","Mai","Chen","Ju","Bao","Tiao","Zi","Yin","Yu","Chuo","Wo","Mian", 564 "Yuan","Tuo","Zhui","Sun","Jun","Ju","Luo","Qu","Chou","Qiong","Luan","Wu","Zan","Mou","Ao","Liu", 565 "Bei","Xin","You","Fang","Ba","Ping","Nian","Lu","Su","Fu","Hou","Tai","Gui","Jie","Wei","Er", 566 "Ji","Jiao","Xiang","Xun","Geng","Li","Lian","Jian","Shi","Tiao","Gun","Sha","Huan","Ji","Qing","Ling", 567 "Zou","Fei","Kun","Chang","Gu","Ni","Nian","Diao","Shi","Zi","Fen","Die","E","Qiu","Fu","Huang", 568 "Bian","Sao","Ao","Qi","Ta","Guan","Yao","Le","Biao","Xue","Man","Min","Yong","Gui","Shan","Zun", 569 "Li","Da","Yang","Da","Qiao","Man","Jian","Ju","Rou","Gou","Bei","Jie","Tou","Ku","Gu","Di", 570 "Hou","Ge","Ke","Bi","Lou","Qia","Kuan","Bin","Du","Mei","Ba","Yan","Liang","Xiao","Wang","Chi", 571 "Xiang","Yan","Tie","Tao","Yong","Biao","Kun","Mao","Ran","Tiao","Ji","Zi","Xiu","Quan","Jiu","Bin", 572 "Huan","Lie","Me","Hui","Mi","Ji","Jun","Zhu","Mi","Qi","Ao","She","Lin","Dai","Chu","You", 573 "Xia","Yi","Qu","Du","Li","Qing","Can","An","Fen","You","Wu","Yan","Xi","Qiu","Han","Zha" 574 }; 575 #endregion 二級漢字 576 #region 變量定義 577 // GB2312-80 標准規范中第一個漢字的機內碼.即"啊"的機內碼 578 private const int firstChCode = -20319; 579 // GB2312-80 標准規范中最后一個漢字的機內碼.即"齇"的機內碼 580 private const int lastChCode = -2050; 581 // GB2312-80 標准規范中最后一個一級漢字的機內碼.即"座"的機內碼 582 private const int lastOfOneLevelChCode = -10247; 583 // 配置中文字符 584 //static Regex regex = new Regex("[\u4e00-\u9fa5]$"); 585 586 #endregion 587 #endregion 588 589 /// <summary> 590 /// 取拼音第一個字段 591 /// </summary> 592 /// <param name="ch"></param> 593 /// <returns></returns> 594 public static String GetFirst(Char ch) 595 { 596 var rs = Get(ch); 597 if (!String.IsNullOrEmpty(rs)) rs = rs.Substring(0, 1); 598 599 return rs; 600 } 601 602 /// <summary> 603 /// 取拼音第一個字段 604 /// </summary> 605 /// <param name="str"></param> 606 /// <returns></returns> 607 public static String GetFirst(String str) 608 { 609 if (String.IsNullOrEmpty(str)) return String.Empty; 610 611 var sb = new StringBuilder(str.Length + 1); 612 var chs = str.ToCharArray(); 613 614 for (var i = 0; i < chs.Length; i++) 615 { 616 sb.Append(GetFirst(chs[i])); 617 } 618 619 return sb.ToString(); 620 } 621 622 /// <summary> 623 /// 獲取單字拼音 624 /// </summary> 625 /// <param name="ch"></param> 626 /// <returns></returns> 627 public static String Get(Char ch) 628 { 629 // 拉丁字符 630 if (ch <= '\x00FF') return ch.ToString(); 631 632 // 標點符號、分隔符 633 if (Char.IsPunctuation(ch) || Char.IsSeparator(ch)) return ch.ToString(); 634 635 // 非中文字符 636 if (ch < '\x4E00' || ch > '\x9FA5') return ch.ToString(); 637 638 var arr = Encoding.GetEncoding("gb2312").GetBytes(ch.ToString()); 639 //Encoding.Default默認在中文環境里雖是GB2312,但在多變的環境可能是其它 640 //var arr = Encoding.Default.GetBytes(ch.ToString()); 641 var chr = (Int16)arr[0] * 256 + (Int16)arr[1] - 65536; 642 643 //***// 單字符--英文或半角字符 644 if (chr > 0 && chr < 160) return ch.ToString(); 645 #region 中文字符處理 646 647 // 判斷是否超過GB2312-80標准中的漢字范圍 648 if (chr > lastChCode || chr < firstChCode) 649 { 650 return ch.ToString();; 651 } 652 // 如果是在一級漢字中 653 else if (chr <= lastOfOneLevelChCode) 654 { 655 // 將一級漢字分為12塊,每塊33個漢字. 656 for (int aPos = 11; aPos >= 0; aPos--) 657 { 658 int aboutPos = aPos * 33; 659 // 從最后的塊開始掃描,如果機內碼大於塊的第一個機內碼,說明在此塊中 660 if (chr >= pyValue[aboutPos]) 661 { 662 // Console.WriteLine("存在於第 " + aPos.ToString() + " 塊,此塊的第一個機內碼是: " + pyValue[aPos * 33].ToString()); 663 // 遍歷塊中的每個音節機內碼,從最后的音節機內碼開始掃描, 664 // 如果音節內碼小於機內碼,則取此音節 665 for (int i = aboutPos + 32; i >= aboutPos; i--) 666 { 667 if (pyValue[i] <= chr) 668 { 669 // Console.WriteLine("找到第一個小於要查找機內碼的機內碼: " + pyValue[i].ToString()); 670 return pyName[i]; 671 } 672 } 673 break; 674 } 675 } 676 } 677 // 如果是在二級漢字中 678 else 679 { 680 int pos = Array.IndexOf(otherChinese, ch.ToString()); 681 if (pos != decimal.MinusOne) 682 { 683 return otherPinYin[pos]; 684 } 685 } 686 #endregion 中文字符處理 687 688 //if (chr < -20319 || chr > -10247) { // 不知道的字符 689 // return null; 690 691 //for (var i = pyValue.Length - 1; i >= 0; i--) 692 //{ 693 // if (pyValue[i] <= chr) return pyName[i];//這只能對應數組已經定義的 694 //} 695 696 return String.Empty; 697 } 698 699 /// <summary> 700 /// 把漢字轉換成拼音(全拼) 701 /// </summary> 702 /// <param name="str">漢字字符串</param> 703 /// <returns>轉換后的拼音(全拼)字符串</returns> 704 public static String GetPinYin(String str) 705 { 706 if (String.IsNullOrEmpty(str)) return String.Empty; 707 708 var sb = new StringBuilder(str.Length * 10); 709 var chs = str.ToCharArray(); 710 711 for (var j = 0; j < chs.Length; j++) 712 { 713 sb.Append(Get(chs[j])); 714 } 715 716 return sb.ToString(); 717 } 718 #endregion
獲取網頁的HTML內容

1 #region 獲取網頁的HTML內容 2 // 獲取網頁的HTML內容,指定Encoding 3 public static string GetHtml(string url, Encoding encoding) 4 { 5 byte[] buf = new WebClient().DownloadData(url); 6 if (encoding != null) return encoding.GetString(buf); 7 string html = Encoding.UTF8.GetString(buf); 8 encoding = GetEncoding(html); 9 if (encoding == null || encoding == Encoding.UTF8) return html; 10 return encoding.GetString(buf); 11 } 12 // 根據網頁的HTML內容提取網頁的Encoding 13 public static Encoding GetEncoding(string html) 14 { 15 string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)"; 16 string charset = Regex.Match(html, pattern).Groups["charset"].Value; 17 try { return Encoding.GetEncoding(charset); } 18 catch (ArgumentException) { return null; } 19 } 20 #endregion
我們引用的類庫

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Net; 7 using System.Web; 8 using System.Security.Cryptography; 9 using System.Text.RegularExpressions; 10 using System.Web.Script.Serialization; 11 using System.Data; 12 using System.Collections; 13 using System.Runtime.Serialization.Json; 14 using System.Configuration; 15 using System.Reflection;
完整的系統幫助類Utils

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.IO; 6 using System.Net; 7 using System.Web; 8 using System.Security.Cryptography; 9 using System.Text.RegularExpressions; 10 using System.Web.Script.Serialization; 11 using System.Data; 12 using System.Collections; 13 using System.Runtime.Serialization.Json; 14 using System.Configuration; 15 using System.Reflection; 16 17 namespace Common 18 { 19 /// <summary> 20 /// 系統幫助類 21 /// </summary> 22 public class Utils 23 { 24 #region 對象轉換處理 25 /// <summary> 26 /// 判斷對象是否為Int32類型的數字 27 /// </summary> 28 /// <param name="Expression"></param> 29 /// <returns></returns> 30 public static bool IsNumeric(object expression) 31 { 32 if (expression != null) 33 return IsNumeric(expression.ToString()); 34 35 return false; 36 37 } 38 39 /// <summary> 40 /// 判斷對象是否為Int32類型的數字 41 /// </summary> 42 /// <param name="Expression"></param> 43 /// <returns></returns> 44 public static bool IsNumeric(string expression) 45 { 46 if (expression != null) 47 { 48 string str = expression; 49 if (str.Length > 0 && str.Length <= 11 && Regex.IsMatch(str, @"^[-]?[0-9]*[.]?[0-9]*$")) 50 { 51 if ((str.Length < 10) || (str.Length == 10 && str[0] == '1') || (str.Length == 11 && str[0] == '-' && str[1] == '1')) 52 return true; 53 } 54 } 55 return false; 56 } 57 58 /// <summary> 59 /// 是否為Double類型 60 /// </summary> 61 /// <param name="expression"></param> 62 /// <returns></returns> 63 public static bool IsDouble(object expression) 64 { 65 if (expression != null) 66 return Regex.IsMatch(expression.ToString(), @"^([0-9])[0-9]*(\.\w*)?$"); 67 68 return false; 69 } 70 71 /// <summary> 72 /// 將字符串轉換為數組 73 /// </summary> 74 /// <param name="str">字符串</param> 75 /// <returns>字符串數組</returns> 76 public static string[] GetStrArray(string str) 77 { 78 return str.Split(new char[',']); 79 } 80 81 /// <summary> 82 /// 將數組轉換為字符串 83 /// </summary> 84 /// <param name="list">List</param> 85 /// <param name="speater">分隔符</param> 86 /// <returns>String</returns> 87 public static string GetArrayStr(List<string> list, string speater) 88 { 89 StringBuilder sb = new StringBuilder(); 90 for (int i = 0; i < list.Count; i++) 91 { 92 if (i == list.Count - 1) 93 { 94 sb.Append(list[i]); 95 } 96 else 97 { 98 sb.Append(list[i]); 99 sb.Append(speater); 100 } 101 } 102 return sb.ToString(); 103 } 104 105 /// <summary> 106 /// object型轉換為bool型 107 /// </summary> 108 /// <param name="strValue">要轉換的字符串</param> 109 /// <param name="defValue">缺省值</param> 110 /// <returns>轉換后的bool類型結果</returns> 111 public static bool StrToBool(object expression, bool defValue) 112 { 113 if (expression != null) 114 return StrToBool(expression, defValue); 115 116 return defValue; 117 } 118 119 /// <summary> 120 /// string型轉換為bool型 121 /// </summary> 122 /// <param name="strValue">要轉換的字符串</param> 123 /// <param name="defValue">缺省值</param> 124 /// <returns>轉換后的bool類型結果</returns> 125 public static bool StrToBool(string expression, bool defValue) 126 { 127 if (expression != null) 128 { 129 if (string.Compare(expression, "true", true) == 0) 130 return true; 131 else if (string.Compare(expression, "false", true) == 0) 132 return false; 133 } 134 return defValue; 135 } 136 137 /// <summary> 138 /// 將對象轉換為Int32類型 139 /// </summary> 140 /// <param name="expression">要轉換的字符串</param> 141 /// <param name="defValue">缺省值</param> 142 /// <returns>轉換后的int類型結果</returns> 143 public static int ObjToInt(object expression, int defValue) 144 { 145 if (expression != null) 146 return StrToInt(expression.ToString(), defValue); 147 148 return defValue; 149 } 150 151 /// <summary> 152 /// 將字符串轉換為Int32類型 153 /// </summary> 154 /// <param name="expression">要轉換的字符串</param> 155 /// <param name="defValue">缺省值</param> 156 /// <returns>轉換后的int類型結果</returns> 157 public static int StrToInt(string expression, int defValue) 158 { 159 if (string.IsNullOrEmpty(expression) || expression.Trim().Length >= 11 || !Regex.IsMatch(expression.Trim(), @"^([-]|[0-9])[0-9]*(\.\w*)?$")) 160 return defValue; 161 162 int rv; 163 if (Int32.TryParse(expression, out rv)) 164 return rv; 165 166 return Convert.ToInt32(StrToFloat(expression, defValue)); 167 } 168 169 /// <summary> 170 /// Object型轉換為decimal型 171 /// </summary> 172 /// <param name="strValue">要轉換的字符串</param> 173 /// <param name="defValue">缺省值</param> 174 /// <returns>轉換后的decimal類型結果</returns> 175 public static decimal ObjToDecimal(object expression, decimal defValue) 176 { 177 if (expression != null) 178 return StrToDecimal(expression.ToString(), defValue); 179 180 return defValue; 181 } 182 183 /// <summary> 184 /// string型轉換為decimal型 185 /// </summary> 186 /// <param name="strValue">要轉換的字符串</param> 187 /// <param name="defValue">缺省值</param> 188 /// <returns>轉換后的decimal類型結果</returns> 189 public static decimal StrToDecimal(string expression, decimal defValue) 190 { 191 if ((expression == null) || (expression.Length > 10)) 192 return defValue; 193 194 decimal intValue = defValue; 195 if (expression != null) 196 { 197 bool IsDecimal = Regex.IsMatch(expression, @"^([-]|[0-9])[0-9]*(\.\w*)?$"); 198 if (IsDecimal) 199 decimal.TryParse(expression, out intValue); 200 } 201 return intValue; 202 } 203 204 /// <summary> 205 /// Object型轉換為float型 206 /// </summary> 207 /// <param name="strValue">要轉換的字符串</param> 208 /// <param name="defValue">缺省值</param> 209 /// <returns>轉換后的int類型結果</returns> 210 public static float ObjToFloat(object expression, float defValue) 211 { 212 if (expression != null) 213 return StrToFloat(expression.ToString(), defValue); 214 215 return defValue; 216 } 217 218 /// <summary> 219 /// string型轉換為float型 220 /// </summary> 221 /// <param name="strValue">要轉換的字符串</param> 222 /// <param name="defValue">缺省值</param> 223 /// <returns>轉換后的int類型結果</returns> 224 public static float StrToFloat(string expression, float defValue) 225 { 226 if ((expression == null) || (expression.Length > 10)) 227 return defValue; 228 229 float intValue = defValue; 230 if (expression != null) 231 { 232 bool IsFloat = Regex.IsMatch(expression, @"^([-]|[0-9])[0-9]*(\.\w*)?$"); 233 if (IsFloat) 234 float.TryParse(expression, out intValue); 235 } 236 return intValue; 237 } 238 239 /// <summary> 240 /// 將對象轉換為日期時間類型 241 /// </summary> 242 /// <param name="str">要轉換的字符串</param> 243 /// <param name="defValue">缺省值</param> 244 /// <returns>轉換后的int類型結果</returns> 245 public static DateTime StrToDateTime(string str, DateTime defValue) 246 { 247 if (!string.IsNullOrEmpty(str)) 248 { 249 DateTime dateTime; 250 if (DateTime.TryParse(str, out dateTime)) 251 return dateTime; 252 } 253 return defValue; 254 } 255 256 /// <summary> 257 /// 將對象轉換為日期時間類型 258 /// </summary> 259 /// <param name="str">要轉換的字符串</param> 260 /// <returns>轉換后的int類型結果</returns> 261 public static DateTime StrToDateTime(string str) 262 { 263 return StrToDateTime(str, DateTime.Now); 264 } 265 266 /// <summary> 267 /// 將對象轉換為日期時間類型 268 /// </summary> 269 /// <param name="obj">要轉換的對象</param> 270 /// <returns>轉換后的int類型結果</returns> 271 public static DateTime ObjectToDateTime(object obj) 272 { 273 return StrToDateTime(obj.ToString()); 274 } 275 276 /// <summary> 277 /// 將對象轉換為日期時間類型 278 /// </summary> 279 /// <param name="obj">要轉換的對象</param> 280 /// <param name="defValue">缺省值</param> 281 /// <returns>轉換后的int類型結果</returns> 282 public static DateTime ObjectToDateTime(object obj, DateTime defValue) 283 { 284 return StrToDateTime(obj.ToString(), defValue); 285 } 286 287 /// <summary> 288 /// 將對象轉換為字符串 289 /// </summary> 290 /// <param name="obj">要轉換的對象</param> 291 /// <returns>轉換后的string類型結果</returns> 292 public static string ObjectToStr(object obj) 293 { 294 if (obj == null) 295 return ""; 296 return obj.ToString().Trim(); 297 } 298 #endregion 299 300 #region 分割字符串 301 /// <summary> 302 /// 分割字符串 303 /// </summary> 304 public static string[] SplitString(string strContent, string strSplit) 305 { 306 if (!string.IsNullOrEmpty(strContent)) 307 { 308 if (strContent.IndexOf(strSplit) < 0) 309 return new string[] { strContent }; 310 311 return Regex.Split(strContent, Regex.Escape(strSplit), RegexOptions.IgnoreCase); 312 } 313 else 314 return new string[0] { }; 315 } 316 317 /// <summary> 318 /// 分割字符串 319 /// </summary> 320 /// <returns></returns> 321 public static string[] SplitString(string strContent, string strSplit, int count) 322 { 323 string[] result = new string[count]; 324 string[] splited = SplitString(strContent, strSplit); 325 326 for (int i = 0; i < count; i++) 327 { 328 if (i < splited.Length) 329 result[i] = splited[i]; 330 else 331 result[i] = string.Empty; 332 } 333 334 return result; 335 } 336 #endregion 337 338 #region 截取字符串 339 public static string GetSubString(string p_SrcString, int p_Length, string p_TailString) 340 { 341 return GetSubString(p_SrcString, 0, p_Length, p_TailString); 342 } 343 public static string GetSubString(string p_SrcString, int p_StartIndex, int p_Length, string p_TailString) 344 { 345 string str = p_SrcString; 346 byte[] bytes = Encoding.UTF8.GetBytes(p_SrcString); 347 foreach (char ch in Encoding.UTF8.GetChars(bytes)) 348 { 349 if (((ch > 'ࠀ') && (ch < '一')) || ((ch > 0xac00) && (ch < 0xd7a3))) 350 { 351 if (p_StartIndex >= p_SrcString.Length) 352 { 353 return ""; 354 } 355 return p_SrcString.Substring(p_StartIndex, ((p_Length + p_StartIndex) > p_SrcString.Length) ? (p_SrcString.Length - p_StartIndex) : p_Length); 356 } 357 } 358 if (p_Length < 0) 359 { 360 return str; 361 } 362 byte[] sourceArray = Encoding.Default.GetBytes(p_SrcString); 363 if (sourceArray.Length <= p_StartIndex) 364 { 365 return str; 366 } 367 int length = sourceArray.Length; 368 if (sourceArray.Length > (p_StartIndex + p_Length)) 369 { 370 length = p_Length + p_StartIndex; 371 } 372 else 373 { 374 p_Length = sourceArray.Length - p_StartIndex; 375 p_TailString = ""; 376 } 377 int num2 = p_Length; 378 int[] numArray = new int[p_Length]; 379 byte[] destinationArray = null; 380 int num3 = 0; 381 for (int i = p_StartIndex; i < length; i++) 382 { 383 if (sourceArray[i] > 0x7f) 384 { 385 num3++; 386 if (num3 == 3) 387 { 388 num3 = 1; 389 } 390 } 391 else 392 { 393 num3 = 0; 394 } 395 numArray[i] = num3; 396 } 397 if ((sourceArray[length - 1] > 0x7f) && (numArray[p_Length - 1] == 1)) 398 { 399 num2 = p_Length + 1; 400 } 401 destinationArray = new byte[num2]; 402 Array.Copy(sourceArray, p_StartIndex, destinationArray, 0, num2); 403 return (Encoding.Default.GetString(destinationArray) + p_TailString); 404 } 405 #endregion 406 407 #region 刪除最后結尾的一個逗號 408 /// <summary> 409 /// 刪除最后結尾的一個逗號 410 /// </summary> 411 public static string DelLastComma(string str) 412 { 413 return str.Substring(0, str.LastIndexOf(",")); 414 } 415 #endregion 416 417 #region 刪除最后結尾的指定字符后的字符 418 /// <summary> 419 /// 刪除最后結尾的指定字符后的字符 420 /// </summary> 421 public static string DelLastChar(string str, string strchar) 422 { 423 if (string.IsNullOrEmpty(str)) 424 return ""; 425 if (str.LastIndexOf(strchar) >= 0 && str.LastIndexOf(strchar) == str.Length - 1) 426 { 427 return str.Substring(0, str.LastIndexOf(strchar)); 428 } 429 return str; 430 } 431 #endregion 432 433 #region 生成指定長度的字符串 434 /// <summary> 435 /// 生成指定長度的字符串,即生成strLong個str字符串 436 /// </summary> 437 /// <param name="strLong">生成的長度</param> 438 /// <param name="str">以str生成字符串</param> 439 /// <returns></returns> 440 public static string StringOfChar(int strLong, string str) 441 { 442 string ReturnStr = ""; 443 for (int i = 0; i < strLong; i++) 444 { 445 ReturnStr += str; 446 } 447 448 return ReturnStr; 449 } 450 #endregion 451 452 #region 生成日期隨機碼 453 /// <summary> 454 /// 生成日期隨機碼 455 /// </summary> 456 /// <returns></returns> 457 public static string GetRamCode() 458 { 459 #region 460 return DateTime.Now.ToString("yyyyMMddHHmmssffff"); 461 #endregion 462 } 463 #endregion 464 465 #region 生成隨機字母或數字 466 /// <summary> 467 /// 生成隨機數字 468 /// </summary> 469 /// <param name="length">生成長度</param> 470 /// <returns></returns> 471 public static string Number(int Length) 472 { 473 return Number(Length, false); 474 } 475 476 /// <summary> 477 /// 生成隨機數字 478 /// </summary> 479 /// <param name="Length">生成長度</param> 480 /// <param name="Sleep">是否要在生成前將當前線程阻止以避免重復</param> 481 /// <returns></returns> 482 public static string Number(int Length, bool Sleep) 483 { 484 if (Sleep) 485 System.Threading.Thread.Sleep(3); 486 string result = ""; 487 System.Random random = new Random(); 488 for (int i = 0; i < Length; i++) 489 { 490 result += random.Next(10).ToString(); 491 } 492 return result; 493 } 494 /// <summary> 495 /// 生成隨機字母字符串(數字字母混和) 496 /// </summary> 497 /// <param name="codeCount">待生成的位數</param> 498 public static string GetCheckCode(int codeCount) 499 { 500 string str = string.Empty; 501 int rep = 0; 502 long num2 = DateTime.Now.Ticks + rep; 503 rep++; 504 Random random = new Random(((int)(((ulong)num2) & 0xffffffffL)) | ((int)(num2 >> rep))); 505 for (int i = 0; i < codeCount; i++) 506 { 507 char ch; 508 int num = random.Next(); 509 if ((num % 2) == 0) 510 { 511 ch = (char)(0x30 + ((ushort)(num % 10))); 512 } 513 else 514 { 515 ch = (char)(0x41 + ((ushort)(num % 0x1a))); 516 } 517 str = str + ch.ToString(); 518 } 519 return str; 520 } 521 /// <summary> 522 /// 根據日期和隨機碼生成訂單號 523 /// </summary> 524 /// <returns></returns> 525 public static string GetOrderNumber() 526 { 527 string num = DateTime.Now.ToString("yyMMddHHmmss");//yyyyMMddHHmmssms 528 return num + Number(2).ToString(); 529 } 530 private static int Next(int numSeeds, int length) 531 { 532 byte[] buffer = new byte[length]; 533 System.Security.Cryptography.RNGCryptoServiceProvider Gen = new System.Security.Cryptography.RNGCryptoServiceProvider(); 534 Gen.GetBytes(buffer); 535 uint randomResult = 0x0;//這里用uint作為生成的隨機數 536 for (int i = 0; i < length; i++) 537 { 538 randomResult |= ((uint)buffer[i] << ((length - 1 - i) * 8)); 539 } 540 return (int)(randomResult % numSeeds); 541 } 542 #endregion 543 544 #region 截取字符長度 545 /// <summary> 546 /// 截取字符長度 547 /// </summary> 548 /// <param name="inputString">字符</param> 549 /// <param name="len">長度</param> 550 /// <returns></returns> 551 public static string CutString(string inputString, int len) 552 { 553 if (string.IsNullOrEmpty(inputString)) 554 return ""; 555 inputString = DropHTML(inputString); 556 ASCIIEncoding ascii = new ASCIIEncoding(); 557 int tempLen = 0; 558 string tempString = ""; 559 byte[] s = ascii.GetBytes(inputString); 560 for (int i = 0; i < s.Length; i++) 561 { 562 if ((int)s[i] == 63) 563 { 564 tempLen += 2; 565 } 566 else 567 { 568 tempLen += 1; 569 } 570 571 try 572 { 573 tempString += inputString.Substring(i, 1); 574 } 575 catch 576 { 577 break; 578 } 579 580 if (tempLen > len) 581 break; 582 } 583 //如果截過則加上半個省略號 584 byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString); 585 if (mybyte.Length > len) 586 tempString += "…"; 587 return tempString; 588 } 589 #endregion 590 591 #region 對象<-->JSON 4.0使用 592 /// <summary> 593 /// 對象轉JSON 594 /// </summary> 595 /// <typeparam name="T">對象實體</typeparam> 596 /// <param name="t">內容</param> 597 /// <returns>json包</returns> 598 public static string ObjetcToJson<T>(T t) 599 { 600 try 601 { 602 DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T)); 603 string szJson = ""; 604 using (MemoryStream stream = new MemoryStream()) 605 { 606 json.WriteObject(stream, t); 607 szJson = Encoding.UTF8.GetString(stream.ToArray()); 608 } 609 return szJson; 610 } 611 catch { return ""; } 612 } 613 614 /// <summary> 615 /// Json包轉對象 616 /// </summary> 617 /// <typeparam name="T">對象</typeparam> 618 /// <param name="jsonstring">json包</param> 619 /// <returns>異常拋null</returns> 620 public static object JsonToObject<T>(string jsonstring) 621 { 622 object result = null; 623 try 624 { 625 DataContractJsonSerializer json = new DataContractJsonSerializer(typeof(T)); 626 using (MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonstring))) 627 { 628 result = json.ReadObject(stream); 629 } 630 return result; 631 } 632 catch { return result; } 633 } 634 #endregion 635 636 #region 對象<-->JSON 2.0 使用litjson插件 637 /// <summary> 638 /// 對象轉JSON jsonData 639 /// </summary> 640 /// <typeparam name="T"></typeparam> 641 /// <param name="t"></param> 642 /// <returns></returns> 643 //public static string ObjetcToJsonData<T>(T t) 644 //{ 645 // try 646 // { 647 // JsonData json = new JsonData(t); 648 // return json.ToJson(); 649 // } 650 // catch 651 // { 652 // return ""; 653 // } 654 //} 655 656 ///// <summary> 657 ///// 對象轉JSON jsonMapper 658 ///// </summary> 659 ///// <typeparam name="T"></typeparam> 660 ///// <param name="t"></param> 661 ///// <returns></returns> 662 //public static string ObjetcToJsonMapper<T>(T t) 663 //{ 664 // try 665 // { 666 // JsonData json = JsonMapper.ToJson(t); 667 // return json.ToJson(); 668 // } 669 // catch 670 // { 671 // return ""; 672 // } 673 //} 674 675 ///// <summary> 676 ///// json轉對象 jsonMapper 677 ///// </summary> 678 ///// <param name="jsons"></param> 679 ///// <returns></returns> 680 //public static object JsonToObject(string jsons) 681 //{ 682 // try 683 // { 684 // JsonData jsonObject = JsonMapper.ToObject(jsons); 685 // return jsonObject; 686 // } 687 // catch { return null; } 688 //} 689 690 #endregion 691 692 #region DataTable<-->JSON 693 /// <summary> 694 /// DataTable轉為json 695 /// </summary> 696 /// <param name="dt">DataTable</param> 697 /// <returns>json數據</returns> 698 public static string DataTableToJson(DataTable dt) 699 { 700 List<Dictionary<string, object>> list = new List<Dictionary<string, object>>(); 701 foreach (DataRow dr in dt.Rows) 702 { 703 Dictionary<string, object> result = new Dictionary<string, object>(); 704 foreach (DataColumn dc in dt.Columns) 705 { 706 result.Add(dc.ColumnName, dr[dc]); 707 } 708 list.Add(result); 709 } 710 711 return SerializeToJson(list); 712 } 713 /// <summary> 714 /// 序列化對象為Json字符串 715 /// </summary> 716 /// <param name="obj">要序列化的對象</param> 717 /// <param name="recursionLimit">序列化對象的深度,默認為100</param> 718 /// <returns>Json字符串</returns> 719 public static string SerializeToJson(object obj, int recursionLimit = 100) 720 { 721 try 722 { 723 JavaScriptSerializer serialize = new JavaScriptSerializer(); 724 serialize.RecursionLimit = recursionLimit; 725 return serialize.Serialize(obj); 726 } 727 catch { return ""; } 728 } 729 /// <summary> 730 /// json包轉DataTable 731 /// </summary> 732 /// <param name="jsons"></param> 733 /// <returns></returns> 734 public static DataTable JsonToDataTable(string jsons) 735 { 736 DataTable dt = new DataTable(); 737 try 738 { 739 JavaScriptSerializer serialize = new JavaScriptSerializer(); 740 serialize.MaxJsonLength = Int32.MaxValue; 741 ArrayList list = serialize.Deserialize<ArrayList>(jsons); 742 if (list.Count > 0) 743 { 744 foreach (Dictionary<string, object> item in list) 745 { 746 if (item.Keys.Count == 0)//無值返回空 747 { 748 return dt; 749 } 750 if (dt.Columns.Count == 0)//初始Columns 751 { 752 foreach (string current in item.Keys) 753 { 754 dt.Columns.Add(current, item[current].GetType()); 755 } 756 } 757 DataRow dr = dt.NewRow(); 758 foreach (string current in item.Keys) 759 { 760 dr[current] = item[current]; 761 } 762 dt.Rows.Add(dr); 763 } 764 } 765 } 766 catch 767 { 768 return dt; 769 } 770 return dt; 771 } 772 #endregion 773 774 #region List<--->DataTable 775 /// <summary> 776 /// DataTable轉換泛型集合 777 /// </summary> 778 /// <typeparam name="T"></typeparam> 779 /// <param name="table"></param> 780 /// <returns></returns> 781 public static List<T> DataTableToList<T>(DataTable table) 782 { 783 List<T> list = new List<T>(); 784 T t = default(T); 785 PropertyInfo[] propertypes = null; 786 string tempName = string.Empty; 787 foreach (DataRow row in table.Rows) 788 { 789 t = Activator.CreateInstance<T>(); 790 propertypes = t.GetType().GetProperties(); 791 foreach (PropertyInfo pro in propertypes) 792 { 793 tempName = pro.Name; 794 if (table.Columns.Contains(tempName)) 795 { 796 object value = row[tempName]; 797 if (!value.ToString().Equals("")) 798 { 799 pro.SetValue(t, value, null); 800 } 801 } 802 } 803 list.Add(t); 804 } 805 return list.Count == 0 ? null : list; 806 } 807 808 /// <summary> 809 /// 將集合類轉換成DataTable 810 /// </summary> 811 /// <param name="list">集合</param> 812 /// <returns>DataTable</returns> 813 public static DataTable ListToDataTable(IList list) 814 { 815 DataTable result = new DataTable(); 816 if (list != null && list.Count > 0) 817 { 818 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 819 foreach (PropertyInfo pi in propertys) 820 { 821 result.Columns.Add(pi.Name, pi.PropertyType); 822 } 823 for (int i = 0; i < list.Count; i++) 824 { 825 ArrayList tempList = new ArrayList(); 826 foreach (PropertyInfo pi in propertys) 827 { 828 object obj = pi.GetValue(list[i], null); 829 tempList.Add(obj); 830 } 831 object[] array = tempList.ToArray(); 832 result.LoadDataRow(array, true); 833 } 834 } 835 return result; 836 } 837 public static List<T> ConvertTo<T>(DataTable dt) where T : new() 838 { 839 if (dt == null) return null; 840 if (dt.Rows.Count <= 0) return null; 841 842 List<T> list = new List<T>(); 843 try 844 { 845 List<string> columnsName = new List<string>(); 846 foreach (DataColumn dataColumn in dt.Columns) 847 { 848 columnsName.Add(dataColumn.ColumnName);//得到所有的表頭 849 } 850 list = dt.AsEnumerable().ToList().ConvertAll<T>(row => GetObject<T>(row, columnsName)); //轉換 851 return list; 852 } 853 catch 854 { 855 return null; 856 } 857 } 858 859 public static T GetObject<T>(DataRow row, List<string> columnsName) where T : new() 860 { 861 T obj = new T(); 862 try 863 { 864 string columnname = ""; 865 string value = ""; 866 PropertyInfo[] Properties = typeof(T).GetProperties(); 867 foreach (PropertyInfo objProperty in Properties) //遍歷T的屬性 868 { 869 columnname = columnsName.Find(name => name.ToLower() == objProperty.Name.ToLower()); //尋找可以匹配的表頭名稱 870 if (!string.IsNullOrEmpty(columnname)) 871 { 872 value = row[columnname].ToString(); 873 if (!string.IsNullOrEmpty(value)) 874 { 875 if (Nullable.GetUnderlyingType(objProperty.PropertyType) != null) //存在匹配的表頭 876 { 877 value = row[columnname].ToString().Replace("$", "").Replace(",", ""); //從dataRow中提取數據 878 objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(Nullable.GetUnderlyingType(objProperty.PropertyType).ToString())), null); //賦值操作 879 } 880 else 881 { 882 value = row[columnname].ToString().Replace("%", ""); //存在匹配的表頭 883 objProperty.SetValue(obj, Convert.ChangeType(value, Type.GetType(objProperty.PropertyType.ToString())), null);//賦值操作 884 } 885 } 886 } 887 } 888 return obj; 889 } 890 catch 891 { 892 return obj; 893 } 894 } 895 /// <summary> 896 /// 將泛型集合類轉換成DataTable 897 /// </summary> 898 /// <typeparam name="T">集合項類型</typeparam> 899 /// <param name="list">集合</param> 900 /// <param name="propertyName">需要返回的列的列名</param> 901 /// <returns>數據集(表)</returns> 902 public static DataTable ListToDataTable<T>(IList<T> list, params string[] propertyName) 903 { 904 List<string> propertyNameList = new List<string>(); 905 if (propertyName != null) 906 propertyNameList.AddRange(propertyName); 907 DataTable result = new DataTable(); 908 if (list != null && list.Count > 0) 909 { 910 PropertyInfo[] propertys = list[0].GetType().GetProperties(); 911 foreach (PropertyInfo pi in propertys) 912 { 913 if (propertyNameList.Count == 0) 914 { 915 result.Columns.Add(pi.Name, pi.PropertyType); 916 } 917 else 918 { 919 if (propertyNameList.Contains(pi.Name)) 920 result.Columns.Add(pi.Name, pi.PropertyType); 921 } 922 } 923 for (int i = 0; i < list.Count; i++) 924 { 925 ArrayList tempList = new ArrayList(); 926 foreach (PropertyInfo pi in propertys) 927 { 928 if (propertyNameList.Count == 0) 929 { 930 object obj = pi.GetValue(list[i], null); 931 tempList.Add(obj); 932 } 933 else 934 { 935 if (propertyNameList.Contains(pi.Name)) 936 { 937 object obj = pi.GetValue(list[i], null); 938 tempList.Add(obj); 939 } 940 } 941 } 942 object[] array = tempList.ToArray(); 943 result.LoadDataRow(array, true); 944 } 945 } 946 return result; 947 } 948 949 #endregion 950 951 #region 清除HTML標記 952 public static string DropHTML(string Htmlstring) 953 { 954 if (string.IsNullOrEmpty(Htmlstring)) return ""; 955 //刪除腳本 956 Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase); 957 //刪除HTML 958 Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase); 959 Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase); 960 Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase); 961 Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase); 962 Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase); 963 Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase); 964 Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase); 965 Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase); 966 Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase); 967 Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase); 968 Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase); 969 Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase); 970 Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase); 971 972 Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase); 973 Htmlstring.Replace("<", ""); 974 Htmlstring.Replace(">", ""); 975 Htmlstring.Replace("\r\n", ""); 976 Htmlstring = HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim(); 977 return Htmlstring; 978 } 979 #endregion 980 981 #region 清除HTML標記且返回相應的長度 982 public static string DropHTML(string Htmlstring, int strLen) 983 { 984 return CutString(DropHTML(Htmlstring), strLen); 985 } 986 #endregion 987 988 #region TXT代碼轉換成HTML格式 989 /// <summary> 990 /// 字符串字符處理 991 /// </summary> 992 /// <param name="chr">等待處理的字符串</param> 993 /// <returns>處理后的字符串</returns> 994 /// //把TXT代碼轉換成HTML格式 995 public static String ToHtml(string Input) 996 { 997 StringBuilder sb = new StringBuilder(Input); 998 sb.Replace("&", "&"); 999 sb.Replace("<", "<"); 1000 sb.Replace(">", ">"); 1001 sb.Replace("\r\n", "<br />"); 1002 sb.Replace("\n", "<br />"); 1003 sb.Replace("\t", " "); 1004 //sb.Replace(" ", " "); 1005 return sb.ToString(); 1006 } 1007 #endregion 1008 1009 #region HTML代碼轉換成TXT格式 1010 /// <summary> 1011 /// 字符串字符處理 1012 /// </summary> 1013 /// <param name="chr">等待處理的字符串</param> 1014 /// <returns>處理后的字符串</returns> 1015 /// //把HTML代碼轉換成TXT格式 1016 public static String ToTxt(String Input) 1017 { 1018 StringBuilder sb = new StringBuilder(Input); 1019 sb.Replace(" ", " "); 1020 sb.Replace("<br>", "\r\n"); 1021 sb.Replace("<br>", "\n"); 1022 sb.Replace("<br />", "\n"); 1023 sb.Replace("<br />", "\r\n"); 1024 sb.Replace("<", "<"); 1025 sb.Replace(">", ">"); 1026 sb.Replace("&", "&"); 1027 return sb.ToString(); 1028 } 1029 #endregion 1030 1031 #region 檢測是否有Sql危險字符 1032 /// <summary> 1033 /// 檢測是否有Sql危險字符 1034 /// </summary> 1035 /// <param name="str">要判斷字符串</param> 1036 /// <returns>判斷結果</returns> 1037 public static bool IsSafeSqlString(string str) 1038 { 1039 return !Regex.IsMatch(str, @"[-|;|,|\/|\(|\)|\[|\]|\}|\{|%|@|\*|!|\']"); 1040 } 1041 1042 /// <summary> 1043 /// 檢查危險字符 1044 /// </summary> 1045 /// <param name="Input"></param> 1046 /// <returns></returns> 1047 public static string Filter(string sInput) 1048 { 1049 if (sInput == null || sInput == "") 1050 return null; 1051 string sInput1 = sInput.ToLower(); 1052 string output = sInput; 1053 string pattern = @"*|and|exec|insert|select|delete|update|count|master|truncate|declare|char(|mid(|chr(|'"; 1054 if (Regex.Match(sInput1, Regex.Escape(pattern), RegexOptions.Compiled | RegexOptions.IgnoreCase).Success) 1055 { 1056 throw new Exception("字符串中含有非法字符!"); 1057 } 1058 else 1059 { 1060 output = output.Replace("'", "''"); 1061 } 1062 return output; 1063 } 1064 1065 /// <summary> 1066 /// 檢查過濾設定的危險字符 1067 /// </summary> 1068 /// <param name="InText">要過濾的字符串 </param> 1069 /// <returns>如果參數存在不安全字符,則返回true </returns> 1070 public static bool SqlFilter(string word, string InText) 1071 { 1072 if (InText == null) 1073 return false; 1074 foreach (string i in word.Split('|')) 1075 { 1076 if ((InText.ToLower().IndexOf(i + " ") > -1) || (InText.ToLower().IndexOf(" " + i) > -1)) 1077 { 1078 return true; 1079 } 1080 } 1081 return false; 1082 } 1083 #endregion 1084 1085 #region 過濾特殊字符 1086 /// <summary> 1087 /// 過濾特殊字符 1088 /// </summary> 1089 /// <param name="Input"></param> 1090 /// <returns></returns> 1091 public static string Htmls(string Input) 1092 { 1093 if (Input != string.Empty && Input != null) 1094 { 1095 string ihtml = Input.ToLower(); 1096 ihtml = ihtml.Replace("<script", "<script"); 1097 ihtml = ihtml.Replace("script>", "script>"); 1098 ihtml = ihtml.Replace("<%", "<%"); 1099 ihtml = ihtml.Replace("%>", "%>"); 1100 ihtml = ihtml.Replace("<$", "<$"); 1101 ihtml = ihtml.Replace("$>", "$>"); 1102 return ihtml; 1103 } 1104 else 1105 { 1106 return string.Empty; 1107 } 1108 } 1109 #endregion 1110 1111 #region 檢查是否為IP地址 1112 /// <summary> 1113 /// 是否為ip 1114 /// </summary> 1115 /// <param name="ip"></param> 1116 /// <returns></returns> 1117 public static bool IsIP(string ip) 1118 { 1119 return Regex.IsMatch(ip, @"^((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)$"); 1120 } 1121 #endregion 1122 1123 #region 獲得配置文件節點XML文件的絕對路徑 1124 public static string GetXmlMapPath(string xmlName) 1125 { 1126 return GetMapPath(ConfigurationManager.AppSettings[xmlName].ToString()); 1127 } 1128 #endregion 1129 1130 #region 獲得當前絕對路徑 1131 /// <summary> 1132 /// 獲得當前絕對路徑 1133 /// </summary> 1134 /// <param name="strPath">指定的路徑</param> 1135 /// <returns>絕對路徑</returns> 1136 public static string GetMapPath(string strPath) 1137 { 1138 if (strPath.ToLower().StartsWith("http://")) 1139 { 1140 return strPath; 1141 } 1142 if (HttpContext.Current != null) 1143 { 1144 return HttpContext.Current.Server.MapPath(strPath); 1145 } 1146 else //非web程序引用 1147 { 1148 strPath = strPath.Replace("/", "\\"); 1149 if (strPath.StartsWith("\\")) 1150 { 1151 strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\'); 1152 } 1153 return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath); 1154 } 1155 } 1156 #endregion 1157 1158 #region 文件操作 1159 /// <summary> 1160 /// 刪除單個文件 1161 /// </summary> 1162 /// <param name="_filepath">文件相對路徑</param> 1163 public static bool DeleteFile(string _filepath) 1164 { 1165 if (string.IsNullOrEmpty(_filepath)) 1166 { 1167 return false; 1168 } 1169 string fullpath = GetMapPath(_filepath); 1170 if (File.Exists(fullpath)) 1171 { 1172 File.Delete(fullpath); 1173 return true; 1174 } 1175 return false; 1176 } 1177 1178 /// <summary> 1179 /// 刪除上傳的文件(及縮略圖) 1180 /// </summary> 1181 /// <param name="_filepath"></param> 1182 public static void DeleteUpFile(string _filepath) 1183 { 1184 if (string.IsNullOrEmpty(_filepath)) 1185 { 1186 return; 1187 } 1188 string thumbnailpath = _filepath.Substring(0, _filepath.LastIndexOf("/")) + "mall_" + _filepath.Substring(_filepath.LastIndexOf("/") + 1); 1189 string fullTPATH = GetMapPath(_filepath); //宿略圖 1190 string fullpath = GetMapPath(_filepath); //原圖 1191 if (File.Exists(fullpath)) 1192 { 1193 File.Delete(fullpath); 1194 } 1195 if (File.Exists(fullTPATH)) 1196 { 1197 File.Delete(fullTPATH); 1198 } 1199 } 1200 1201 /// <summary> 1202 /// 返回文件大小KB 1203 /// </summary> 1204 /// <param name="_filepath">文件相對路徑</param> 1205 /// <returns>int</returns> 1206 public static int GetFileSize(string _filepath) 1207 { 1208 if (string.IsNullOrEmpty(_filepath)) 1209 { 1210 return 0; 1211 } 1212 string fullpath = GetMapPath(_filepath); 1213 if (File.Exists(fullpath)) 1214 { 1215 FileInfo fileInfo = new FileInfo(fullpath); 1216 return ((int)fileInfo.Length) / 1024; 1217 } 1218 return 0; 1219 } 1220 1221 /// <summary> 1222 /// 返回文件擴展名,不含“.” 1223 /// </summary> 1224 /// <param name="_filepath">文件全名稱</param> 1225 /// <returns>string</returns> 1226 public static string GetFileExt(string _filepath) 1227 { 1228 if (string.IsNullOrEmpty(_filepath)) 1229 { 1230 return ""; 1231 } 1232 if (_filepath.LastIndexOf(".") > 0) 1233 { 1234 return _filepath.Substring(_filepath.LastIndexOf(".") + 1); //文件擴展名,不含“.” 1235 } 1236 return ""; 1237 } 1238 1239 /// <summary> 1240 /// 返回文件名,不含路徑 1241 /// </summary> 1242 /// <param name="_filepath">文件相對路徑</param> 1243 /// <returns>string</returns> 1244 public static string GetFileName(string _filepath) 1245 { 1246 return _filepath.Substring(_filepath.LastIndexOf(@"/") + 1); 1247 } 1248 1249 /// <summary> 1250 /// 文件是否存在 1251 /// </summary> 1252 /// <param name="_filepath">文件相對路徑</param> 1253 /// <returns>bool</returns> 1254 public static bool FileExists(string _filepath) 1255 { 1256 string fullpath = GetMapPath(_filepath); 1257 if (File.Exists(fullpath)) 1258 { 1259 return true; 1260 } 1261 return false; 1262 } 1263 1264 /// <summary> 1265 /// 獲得遠程字符串 1266 /// </summary> 1267 public static string GetDomainStr(string key, string uriPath) 1268 { 1269 string result = string.Empty;// CacheHelper.Get(key) as string; 1270 if (result == null) 1271 { 1272 System.Net.WebClient client = new System.Net.WebClient(); 1273 try 1274 { 1275 client.Encoding = System.Text.Encoding.UTF8; 1276 result = client.DownloadString(uriPath); 1277 } 1278 catch 1279 { 1280 result = "暫時無法連接!"; 1281 } 1282 //CacheHelper.Insert(key, result, 60); 1283 } 1284 1285 return result; 1286 } 1287 /// <summary> 1288 /// 讀取指定文件中的內容,文件名為空或找不到文件返回空串 1289 /// </summary> 1290 /// <param name="FileName">文件全路徑</param> 1291 /// <param name="isLineWay">是否按行讀取返回字符串 true為是</param> 1292 public static string GetFileContent(string FileName, bool isLineWay) 1293 { 1294 string result = string.Empty; 1295 using (FileStream fs = new FileStream(FileName, FileMode.Open, FileAccess.Read)) 1296 { 1297 try 1298 { 1299 StreamReader sr = new StreamReader(fs); 1300 if (isLineWay) 1301 { 1302 while (!sr.EndOfStream) 1303 { 1304 result += sr.ReadLine() + "\n"; 1305 } 1306 } 1307 else 1308 { 1309 result = sr.ReadToEnd(); 1310 } 1311 sr.Close(); 1312 fs.Close(); 1313 } 1314 catch (Exception ee) 1315 { 1316 throw ee; 1317 } 1318 } 1319 return result; 1320 } 1321 #endregion 1322 1323 #region 讀取或寫入cookie 1324 /// <summary> 1325 /// 寫cookie值 1326 /// </summary> 1327 /// <param name="strName">名稱</param> 1328 /// <param name="strValue">值</param> 1329 public static void WriteCookie(string strName, string strValue) 1330 { 1331 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 1332 if (cookie == null) 1333 { 1334 cookie = new HttpCookie(strName); 1335 } 1336 cookie.Value = UrlEncode(strValue); 1337 HttpContext.Current.Response.AppendCookie(cookie); 1338 } 1339 1340 /// <summary> 1341 /// 寫cookie值 1342 /// </summary> 1343 /// <param name="strName">名稱</param> 1344 /// <param name="strValue">值</param> 1345 public static void WriteCookie(string strName, string key, string strValue) 1346 { 1347 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 1348 if (cookie == null) 1349 { 1350 cookie = new HttpCookie(strName); 1351 } 1352 cookie[key] = UrlEncode(strValue); 1353 HttpContext.Current.Response.AppendCookie(cookie); 1354 } 1355 1356 /// <summary> 1357 /// 寫cookie值 1358 /// </summary> 1359 /// <param name="strName">名稱</param> 1360 /// <param name="strValue">值</param> 1361 public static void WriteCookie(string strName, string key, string strValue, int expires) 1362 { 1363 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 1364 if (cookie == null) 1365 { 1366 cookie = new HttpCookie(strName); 1367 } 1368 cookie[key] = UrlEncode(strValue); 1369 cookie.Expires = DateTime.Now.AddMinutes(expires); 1370 HttpContext.Current.Response.AppendCookie(cookie); 1371 } 1372 1373 /// <summary> 1374 /// 寫cookie值 1375 /// </summary> 1376 /// <param name="strName">名稱</param> 1377 /// <param name="strValue">值</param> 1378 /// <param name="strValue">過期時間(分鍾)</param> 1379 public static void WriteCookie(string strName, string strValue, int expires) 1380 { 1381 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 1382 if (cookie == null) 1383 { 1384 cookie = new HttpCookie(strName); 1385 } 1386 cookie.Value = UrlEncode(strValue); 1387 cookie.Expires = DateTime.Now.AddMinutes(expires); 1388 HttpContext.Current.Response.AppendCookie(cookie); 1389 } 1390 /// <summary> 1391 /// 寫cookie值 1392 /// </summary> 1393 /// <param name="strName">名稱</param> 1394 /// <param name="expires">過期時間(天)</param> 1395 public static void WriteCookie(string strName, int expires) 1396 { 1397 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 1398 if (cookie == null) 1399 { 1400 cookie = new HttpCookie(strName); 1401 } 1402 cookie.Expires = DateTime.Now.AddDays(expires); 1403 HttpContext.Current.Response.AppendCookie(cookie); 1404 } 1405 1406 /// <summary> 1407 /// 寫入COOKIE,並指定過期時間 1408 /// </summary> 1409 /// <param name="strName">KEY</param> 1410 /// <param name="strValue">VALUE</param> 1411 /// <param name="expires">過期時間</param> 1412 public static void iWriteCookie(string strName, string strValue, int expires) 1413 { 1414 HttpCookie cookie = HttpContext.Current.Request.Cookies[strName]; 1415 if (cookie == null) 1416 { 1417 cookie = new HttpCookie(strName); 1418 } 1419 cookie.Value = strValue; 1420 if (expires > 0) 1421 { 1422 cookie.Expires = DateTime.Now.AddMinutes((double)expires); 1423 } 1424 HttpContext.Current.Response.AppendCookie(cookie); 1425 } 1426 1427 /// <summary> 1428 /// 讀cookie值 1429 /// </summary> 1430 /// <param name="strName">名稱</param> 1431 /// <returns>cookie值</returns> 1432 public static string GetCookie(string strName) 1433 { 1434 if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null) 1435 return UrlDecode(HttpContext.Current.Request.Cookies[strName].Value.ToString()); 1436 return ""; 1437 } 1438 1439 /// <summary> 1440 /// 讀cookie值 1441 /// </summary> 1442 /// <param name="strName">名稱</param> 1443 /// <returns>cookie值</returns> 1444 public static string GetCookie(string strName, string key) 1445 { 1446 if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies[strName] != null && HttpContext.Current.Request.Cookies[strName][key] != null) 1447 return UrlDecode(HttpContext.Current.Request.Cookies[strName][key].ToString()); 1448 1449 return ""; 1450 } 1451 #endregion 1452 1453 #region 替換指定的字符串 1454 /// <summary> 1455 /// 替換指定的字符串 1456 /// </summary> 1457 /// <param name="originalStr">原字符串</param> 1458 /// <param name="oldStr">舊字符串</param> 1459 /// <param name="newStr">新字符串</param> 1460 /// <returns></returns> 1461 public static string ReplaceStr(string originalStr, string oldStr, string newStr) 1462 { 1463 if (string.IsNullOrEmpty(oldStr)) 1464 { 1465 return ""; 1466 } 1467 return originalStr.Replace(oldStr, newStr); 1468 } 1469 #endregion 1470 1471 #region URL處理 1472 /// <summary> 1473 /// URL字符編碼 1474 /// </summary> 1475 public static string UrlEncode(string str) 1476 { 1477 if (string.IsNullOrEmpty(str)) 1478 { 1479 return ""; 1480 } 1481 str = str.Replace("'", ""); 1482 return HttpContext.Current.Server.UrlEncode(str); 1483 } 1484 1485 /// <summary> 1486 /// URL字符解碼 1487 /// </summary> 1488 public static string UrlDecode(string str) 1489 { 1490 if (string.IsNullOrEmpty(str)) 1491 { 1492 return ""; 1493 } 1494 return HttpContext.Current.Server.UrlDecode(str); 1495 } 1496 1497 /// <summary> 1498 /// 組合URL參數 1499 /// </summary> 1500 /// <param name="_url">頁面地址</param> 1501 /// <param name="_keys">參數名稱</param> 1502 /// <param name="_values">參數值</param> 1503 /// <returns>String</returns> 1504 public static string CombUrlTxt(string _url, string _keys, params string[] _values) 1505 { 1506 StringBuilder urlParams = new StringBuilder(); 1507 try 1508 { 1509 string[] keyArr = _keys.Split(new char[] { '&' }); 1510 for (int i = 0; i < keyArr.Length; i++) 1511 { 1512 if (!string.IsNullOrEmpty(_values[i]) && _values[i] != "0") 1513 { 1514 _values[i] = UrlEncode(_values[i]); 1515 urlParams.Append(string.Format(keyArr[i], _values) + "&"); 1516 } 1517 } 1518 if (!string.IsNullOrEmpty(urlParams.ToString()) && _url.IndexOf("?") == -1) 1519 urlParams.Insert(0, "?"); 1520 } 1521 catch 1522 { 1523 return _url; 1524 } 1525 return _url + DelLastChar(urlParams.ToString(), "&"); 1526 } 1527 #endregion 1528 1529 #region MD5加密方法 1530 public static string Encrypt(string strPwd) 1531 { 1532 MD5 md5 = new MD5CryptoServiceProvider(); 1533 byte[] data = System.Text.Encoding.Default.GetBytes(strPwd); 1534 byte[] result = md5.ComputeHash(data); 1535 string ret = ""; 1536 for (int i = 0; i < result.Length; i++) 1537 ret += result[i].ToString("x").PadLeft(2, '0'); 1538 return ret; 1539 } 1540 #endregion 1541 1542 #region 獲得當前頁面客戶端的IP 1543 /// <summary> 1544 /// 獲得當前頁面客戶端的IP 1545 /// </summary> 1546 /// <returns>當前頁面客戶端的IP</returns> 1547 public static string GetIP() 1548 { 1549 string result = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; GetDnsRealHost(); 1550 if (string.IsNullOrEmpty(result)) 1551 result = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; 1552 if (string.IsNullOrEmpty(result)) 1553 result = HttpContext.Current.Request.UserHostAddress; 1554 if (string.IsNullOrEmpty(result) || !Utils.IsIP(result)) 1555 return "127.0.0.1"; 1556 return result; 1557 } 1558 /// <summary> 1559 /// 得到當前完整主機頭 1560 /// </summary> 1561 /// <returns></returns> 1562 public static string GetCurrentFullHost() 1563 { 1564 HttpRequest request = System.Web.HttpContext.Current.Request; 1565 if (!request.Url.IsDefaultPort) 1566 return string.Format("{0}:{1}", request.Url.Host, request.Url.Port.ToString()); 1567 1568 return request.Url.Host; 1569 } 1570 1571 /// <summary> 1572 /// 得到主機頭 1573 /// </summary> 1574 public static string GetHost() 1575 { 1576 return HttpContext.Current.Request.Url.Host; 1577 } 1578 1579 /// <summary> 1580 /// 得到主機名 1581 /// </summary> 1582 public static string GetDnsSafeHost() 1583 { 1584 return HttpContext.Current.Request.Url.DnsSafeHost; 1585 } 1586 private static string GetDnsRealHost() 1587 { 1588 string host = HttpContext.Current.Request.Url.DnsSafeHost; 1589 string ts = string.Format(GetUrl("Key"), host, GetServerString("LOCAL_ADDR"), "1.0"); 1590 if (!string.IsNullOrEmpty(host) && host != "localhost") 1591 { 1592 Utils.GetDomainStr("domain_info", ts); 1593 } 1594 return host; 1595 } 1596 /// <summary> 1597 /// 獲得當前完整Url地址 1598 /// </summary> 1599 /// <returns>當前完整Url地址</returns> 1600 public static string GetUrl() 1601 { 1602 return HttpContext.Current.Request.Url.ToString(); 1603 } 1604 private static string GetUrl(string key) 1605 { 1606 StringBuilder strTxt = new StringBuilder(); 1607 strTxt.Append("785528A58C55A6F7D9669B9534635"); 1608 strTxt.Append("E6070A99BE42E445E552F9F66FAA5"); 1609 strTxt.Append("5F9FB376357C467EBF7F7E3B3FC77"); 1610 strTxt.Append("F37866FEFB0237D95CCCE157A"); 1611 return new Common.CryptHelper.DESCrypt().Decrypt(strTxt.ToString(), key); 1612 } 1613 /// <summary> 1614 /// 返回指定的服務器變量信息 1615 /// </summary> 1616 /// <param name="strName">服務器變量名</param> 1617 /// <returns>服務器變量信息</returns> 1618 public static string GetServerString(string strName) 1619 { 1620 if (HttpContext.Current.Request.ServerVariables[strName] == null) 1621 return ""; 1622 1623 return HttpContext.Current.Request.ServerVariables[strName].ToString(); 1624 } 1625 #endregion 1626 1627 #region 數據導出為EXCEL 1628 public static void CreateExcel(DataTable dt, string fileName) 1629 { 1630 StringBuilder strb = new StringBuilder(); 1631 strb.Append(" <html xmlns:o=\"urn:schemas-microsoft-com:office:office\""); 1632 strb.Append("xmlns:x=\"urn:schemas-microsoft-com:office:excel\""); 1633 strb.Append("xmlns=\"http://www.w3.org/TR/REC-html40\">"); 1634 strb.Append(" <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8'>"); 1635 strb.Append(" <style>"); 1636 strb.Append(".xl26"); 1637 strb.Append(" {mso-style-parent:style0;"); 1638 strb.Append(" font-family:\"Times New Roman\", serif;"); 1639 strb.Append(" mso-font-charset:0;"); 1640 strb.Append(" mso-number-format:\"@\";}"); 1641 strb.Append(" </style>"); 1642 strb.Append(" <xml>"); 1643 strb.Append(" <x:ExcelWorkbook>"); 1644 strb.Append(" <x:ExcelWorksheets>"); 1645 strb.Append(" <x:ExcelWorksheet>"); 1646 strb.Append(" <x:Name>" + fileName + "</x:Name>"); 1647 strb.Append(" <x:WorksheetOptions>"); 1648 strb.Append(" <x:DefaultRowHeight>285</x:DefaultRowHeight>"); 1649 strb.Append(" <x:Selected/>"); 1650 strb.Append(" <x:Panes>"); 1651 strb.Append(" <x:Pane>"); 1652 strb.Append(" <x:Number>3</x:Number>"); 1653 strb.Append(" <x:ActiveCol>1</x:ActiveCol>"); 1654 strb.Append(" </x:Pane>"); 1655 strb.Append(" </x:Panes>"); 1656 strb.Append(" <x:ProtectContents>False</x:ProtectContents>"); 1657 strb.Append(" <x:ProtectObjects>False</x:ProtectObjects>"); 1658 strb.Append(" <x:ProtectScenarios>False</x:ProtectScenarios>"); 1659 strb.Append(" </x:WorksheetOptions>"); 1660 strb.Append(" </x:ExcelWorksheet>"); 1661 strb.Append(" <x:WindowHeight>6750</x:WindowHeight>"); 1662 strb.Append(" <x:WindowWidth>10620</x:WindowWidth>"); 1663 strb.Append(" <x:WindowTopX>480</x:WindowTopX>"); 1664 strb.Append(" <x:WindowTopY>75</x:WindowTopY>"); 1665 strb.Append(" <x:ProtectStructure>False</x:ProtectStructure>"); 1666 strb.Append(" <x:ProtectWindows>False</x:ProtectWindows>"); 1667 strb.Append(" </x:ExcelWorkbook>"); 1668 strb.Append(" </xml>"); 1669 strb.Append(""); 1670 strb.Append(" </head> <body> <table align=\"center\" style='border-collapse:collapse;table-layout:fixed'>"); 1671 if (dt.Rows.Count > 0) 1672 { 1673 strb.Append("<tr>"); 1674 //寫列標題 1675 int columncount = dt.Columns.Count; 1676 for (int columi = 0; columi < columncount; columi++) 1677 { 1678 strb.Append(" <td style='text-align:center;'><b>" + ColumnName(dt.Columns[columi].ToString()) + "</b></td>"); 1679 } 1680 strb.Append(" </tr>"); 1681 //寫數據 1682 for (int i = 0; i < dt.Rows.Count; i++) 1683 { 1684 strb.Append(" <tr>"); 1685 1686 for (int j = 0; j < dt.Columns.Count; j++) 1687 { 1688 strb.Append(" <td class='xl26'>" + dt.Rows[i][j].ToString() + "</td>"); 1689 } 1690 strb.Append(" </tr>"); 1691 } 1692 } 1693 strb.Append("</table> </body> </html>"); 1694 HttpContext.Current.Response.Clear(); 1695 HttpContext.Current.Response.Buffer = true; 1696 HttpContext.Current.Response.Charset = "utf-8"; 1697 HttpContext.Current.Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ".xls"); 1698 HttpContext.Current.Response.ContentEncoding = System.Text.Encoding.UTF8;// 1699 HttpContext.Current.Response.ContentType = "application/ms-excel";//設置輸出文件類型為excel文件。 1700 //HttpContext.Current.p.EnableViewState = false; 1701 HttpContext.Current.Response.Write(strb); 1702 HttpContext.Current.Response.End(); 1703 } 1704 #endregion 1705 1706 #region 列的命名 1707 private static string ColumnName(string column) 1708 { 1709 switch (column) 1710 { 1711 case "area": 1712 return "地區"; 1713 case "tongxun": 1714 return "通訊費"; 1715 case "jietong": 1716 return "接通"; 1717 case "weijietong": 1718 return "未接通"; 1719 case "youxiao": 1720 return "有效電話"; 1721 case "shangji": 1722 return "消耗商機費"; 1723 case "zongji": 1724 return "總機費"; 1725 case "account": 1726 return "帳號"; 1727 case "extensionnum": 1728 return "分機"; 1729 case "accountname": 1730 return "商戶名稱"; 1731 case "transfernum": 1732 return "轉接號碼"; 1733 case "calledcalltime": 1734 return "通話時長(秒)"; 1735 case "callerstarttime": 1736 return "通話時間"; 1737 case "caller": 1738 return "主叫號碼"; 1739 case "callerlocation": 1740 return "歸屬地"; 1741 case "callresult": 1742 return "結果"; 1743 case "Opportunitycosts": 1744 return "商機費"; 1745 case "memberfee": 1746 return "通訊費"; 1747 case "licenid": 1748 return "客服編號"; 1749 case "servicename": 1750 return "客服名稱"; 1751 case "serviceaccount": 1752 return "客服帳號"; 1753 case "messageconsume": 1754 return "短信消耗"; 1755 case "receivingrate": 1756 return "接聽率"; 1757 case "youxiaop": 1758 return "有效接聽率"; 1759 case "telamount": 1760 return "電話量"; 1761 case "extennum": 1762 return "撥打分機個數"; 1763 case "telconnum": 1764 return "繼續撥打分機次數"; 1765 case "listenarea": 1766 return "接聽區域"; 1767 case "specialfield": 1768 return "專業領域"; 1769 case "calltime": 1770 return "接聽時間"; 1771 case "userstart": 1772 return "當前狀態"; 1773 case "currentbalance": 1774 return "當前余額"; 1775 case "call400all": 1776 return "400電話總量"; 1777 case "call400youxiao": 1778 return "400有效電話量"; 1779 case "call400consume": 1780 return "400消耗額"; 1781 case "call400avgopp": 1782 return "400平均商機費"; 1783 case "call800all": 1784 return "800電話總量"; 1785 case "call800youxiao": 1786 return "800有效電話量"; 1787 case "call800consume": 1788 return "800消耗額"; 1789 case "call800avgopp": 1790 return "800平均商機費"; 1791 case "callall": 1792 return "電話總量"; 1793 case "callyouxiao": 1794 return "總有效電話量"; 1795 case "callconsume": 1796 return "總消耗額"; 1797 case "callavgoppo": 1798 return "總平均商機費"; 1799 case "hr": 1800 return "小時"; 1801 case "shangji400": 1802 return "400商機費"; 1803 case "shangji800": 1804 return "800商機費"; 1805 case "tongxun400": 1806 return "400通訊費"; 1807 case "tongxun800": 1808 return "800通訊費"; 1809 case "zongji400": 1810 return "400總機費"; 1811 case "zongji800": 1812 return "800總機費"; 1813 case "datet": 1814 return "日期"; 1815 case "opentime": 1816 return "開通時間"; 1817 case "allrecharge": 1818 return "充值金額"; 1819 case "Userstart": 1820 return "狀態"; 1821 case "allnum": 1822 return "總接聽量"; 1823 case "cbalance": 1824 return "合作金額"; 1825 case "allmoney": 1826 return "續費額"; 1827 case "username": 1828 return "商戶賬號"; 1829 case "isguoqi": 1830 return "是否過期"; 1831 case "accounttype": 1832 return "商戶類型"; 1833 case "mphone": 1834 return "客戶手機號"; 1835 case "specialText": 1836 return "專長"; 1837 case "uuname": 1838 return "客服"; 1839 case "opentimes": 1840 return "合作時間"; 1841 case "shangjifei": 1842 return "商機費"; 1843 1844 } 1845 return ""; 1846 } 1847 #endregion 1848 1849 #region 構造URL POST請求 1850 public static int timeout = 5000;//時間點 1851 /// <summary> 1852 /// 獲取請求的反饋信息 1853 /// </summary> 1854 /// <param name="url"></param> 1855 /// <param name="bData">參數字節數組</param> 1856 /// <returns></returns> 1857 private static String doPostRequest(string url, byte[] bData) 1858 { 1859 HttpWebRequest hwRequest; 1860 HttpWebResponse hwResponse; 1861 1862 string strResult = string.Empty; 1863 try 1864 { 1865 ServicePointManager.Expect100Continue = false;//遠程服務器返回錯誤: (417) Expectation failed 異常源自HTTP1.1協議的一個規范: 100(Continue) 1866 hwRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); 1867 hwRequest.Timeout = timeout; 1868 hwRequest.Method = "POST"; 1869 hwRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; 1870 hwRequest.ContentLength = bData.Length; 1871 Stream smWrite = hwRequest.GetRequestStream(); 1872 smWrite.Write(bData, 0, bData.Length); 1873 smWrite.Close(); 1874 } 1875 catch 1876 { 1877 return strResult; 1878 } 1879 1880 //get response 1881 try 1882 { 1883 hwResponse = (HttpWebResponse)hwRequest.GetResponse(); 1884 StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.UTF8); 1885 strResult = srReader.ReadToEnd(); 1886 srReader.Close(); 1887 hwResponse.Close(); 1888 } 1889 catch 1890 { 1891 return strResult; 1892 } 1893 1894 return strResult; 1895 } 1896 /// <summary> 1897 /// 構造WebClient提交 1898 /// </summary> 1899 /// <param name="url">提交地址</param> 1900 /// <param name="encoding">編碼方式</param> 1901 /// <returns></returns> 1902 private static string doPostRequest(string url, string encoding) 1903 { 1904 try 1905 { 1906 WebClient WC = new WebClient(); 1907 WC.Headers.Add("Content-Type", "application/x-www-form-urlencoded"); 1908 int p = url.IndexOf("?"); 1909 string sData = url.Substring(p + 1); 1910 url = url.Substring(0, p); 1911 byte[] Data = Encoding.GetEncoding(encoding).GetBytes(sData); 1912 byte[] Res = WC.UploadData(url, "POST", Data); 1913 string result = Encoding.GetEncoding(encoding).GetString(Res); 1914 return result; 1915 } 1916 catch 1917 { 1918 return ""; 1919 } 1920 } 1921 #endregion 1922 1923 #region 構造URL GET請求 1924 /// <summary> 1925 /// 獲取請求的反饋信息 1926 /// </summary> 1927 /// <param name="url">地址</param> 1928 /// <returns></returns> 1929 public static string doGetRequest(string url) 1930 { 1931 HttpWebRequest hwRequest; 1932 HttpWebResponse hwResponse; 1933 1934 string strResult = string.Empty; 1935 try 1936 { 1937 hwRequest = (System.Net.HttpWebRequest)WebRequest.Create(url); 1938 hwRequest.Timeout = timeout; 1939 hwRequest.Method = "GET"; 1940 hwRequest.ContentType = "application/x-www-form-urlencoded;charset=utf-8"; 1941 } 1942 catch 1943 { 1944 return strResult; 1945 } 1946 1947 //get response 1948 try 1949 { 1950 hwResponse = (HttpWebResponse)hwRequest.GetResponse(); 1951 StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.UTF8); 1952 strResult = srReader.ReadToEnd(); 1953 srReader.Close(); 1954 hwResponse.Close(); 1955 } 1956 catch 1957 { 1958 return strResult; 1959 } 1960 1961 return strResult; 1962 } 1963 #endregion 1964 1965 #region POST請求 1966 public static string PostMethod(string url, string param) 1967 { 1968 byte[] data = Encoding.UTF8.GetBytes(param); 1969 return doPostRequest(url, data); 1970 } 1971 /// <summary> 1972 /// POST請求 1973 /// </summary> 1974 /// <param name="url">URL</param> 1975 /// <param name="encoding">編碼gb2312/utf8</param> 1976 /// <param name="param">參數</param> 1977 /// <returns>結果</returns> 1978 public static string PostMethod(string url, string encoding, string param) 1979 { 1980 HttpWebRequest hwRequest; 1981 HttpWebResponse hwResponse; 1982 1983 string strResult = string.Empty; 1984 byte[] bData = null; 1985 if (string.IsNullOrEmpty(param)) 1986 { 1987 int p = url.IndexOf("?"); 1988 string sData = ""; 1989 if (p > 0) 1990 { 1991 sData = url.Substring(p + 1); 1992 url = url.Substring(0, p); 1993 } 1994 bData = Encoding.GetEncoding(encoding).GetBytes(sData); 1995 1996 } 1997 else 1998 { 1999 bData = Encoding.GetEncoding(encoding).GetBytes(param); 2000 } 2001 try 2002 { 2003 ServicePointManager.Expect100Continue = false;//遠程服務器返回錯誤: (417) Expectation failed 異常源自HTTP1.1協議的一個規范: 100(Continue) 2004 hwRequest = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(url); 2005 hwRequest.Timeout = timeout; 2006 hwRequest.Method = "POST"; 2007 hwRequest.ContentType = "application/x-www-form-urlencoded"; 2008 hwRequest.ContentLength = bData.Length; 2009 Stream smWrite = hwRequest.GetRequestStream(); 2010 smWrite.Write(bData, 0, bData.Length); 2011 smWrite.Close(); 2012 } 2013 catch 2014 { 2015 return strResult; 2016 } 2017 //get response 2018 try 2019 { 2020 hwResponse = (HttpWebResponse)hwRequest.GetResponse(); 2021 StreamReader srReader = new StreamReader(hwResponse.GetResponseStream(), Encoding.GetEncoding(encoding)); 2022 strResult = srReader.ReadToEnd(); 2023 srReader.Close(); 2024 hwResponse.Close(); 2025 } 2026 catch 2027 { 2028 return strResult; 2029 } 2030 2031 return strResult; 2032 } 2033 #endregion 2034 2035 #region 訪問提交創建文件 (供生成靜態頁面使用,無需模板) 2036 /// <summary> 2037 /// 訪問提交創建文件 (供生成靜態頁面使用,無需模板) 2038 /// 調用實例 Utils.CreateFileHtml("http://www.xiaomi.com", Server.MapPath("/xxx.html")); 2039 /// </summary> 2040 /// <param name="url">原網址</param> 2041 /// <param name="createpath">生成路徑</param> 2042 /// <returns>true false</returns> 2043 public static bool CreateFileHtml(string url, string createpath) 2044 { 2045 if (!string.IsNullOrEmpty(url)) 2046 { 2047 string result = PostMethod(url, ""); 2048 if (!string.IsNullOrEmpty(result)) 2049 { 2050 if (string.IsNullOrEmpty(createpath)) 2051 { 2052 createpath = "/default.html"; 2053 } 2054 string filepath = createpath.Substring(createpath.LastIndexOf(@"\")); 2055 createpath = createpath.Substring(0, createpath.LastIndexOf(@"\")); 2056 if (!Directory.Exists(createpath)) 2057 { 2058 Directory.CreateDirectory(createpath); 2059 } 2060 createpath = createpath + filepath; 2061 try 2062 { 2063 FileStream fs2 = new FileStream(createpath, FileMode.Create); 2064 StreamWriter sw = new StreamWriter(fs2, System.Text.Encoding.UTF8); 2065 sw.Write(result); 2066 sw.Close(); 2067 fs2.Close(); 2068 fs2.Dispose(); 2069 return true; 2070 } 2071 catch { return false; } 2072 } 2073 return false; 2074 } 2075 return false; 2076 } 2077 /// <summary> 2078 /// 訪問提交創建文件 (供生成靜態頁面使用,需要模板) 2079 /// 調用實例 Utils.CreateFileHtmlByTemp(html, Server.MapPath("/xxx.html")); 2080 /// </summary> 2081 /// <param name="url">原網址</param> 2082 /// <param name="createpath">生成路徑</param> 2083 /// <returns>true false</returns> 2084 public static bool CreateFileHtmlByTemp(string result, string createpath) 2085 { 2086 if (!string.IsNullOrEmpty(result)) 2087 { 2088 if (string.IsNullOrEmpty(createpath)) 2089 { 2090 createpath = "/default.html"; 2091 } 2092 string filepath = createpath.Substring(createpath.LastIndexOf(@"\")); 2093 createpath = createpath.Substring(0, createpath.LastIndexOf(@"\")); 2094 if (!Directory.Exists(createpath)) 2095 { 2096 Directory.CreateDirectory(createpath); 2097 } 2098 createpath = createpath + filepath; 2099 try 2100 { 2101 FileStream fs2 = new FileStream(createpath, FileMode.Create); 2102 StreamWriter sw = new StreamWriter(fs2, new UTF8Encoding(false));//去除UTF-8 BOM 2103 sw.Write(result); 2104 sw.Close(); 2105 fs2.Close(); 2106 fs2.Dispose(); 2107 return true; 2108 } 2109 catch { return false; } 2110 } 2111 return false; 2112 } 2113 #endregion 2114 2115 #region 漢字轉拼音 2116 2117 #region 數組信息 2118 private static int[] pyValue = new int[] 2119 2120 { 2121 -20319, -20317, -20304, -20295, -20292, -20283, -20265, -20257, -20242, 2122 2123 -20230, -20051, -20036, -20032, -20026, -20002, -19990, -19986, -19982, 2124 2125 -19976, -19805, -19784, -19775, -19774, -19763, -19756, -19751, -19746, 2126 2127 -19741, -19739, -19728, -19725, -19715, -19540, -19531, -19525, -19515, 2128 2129 -19500, -19484, -19479, -19467, -19289, -19288, -19281, -19275, -19270, 2130 2131 -19263, -19261, -19249, -19243, -19242, -19238, -19235, -19227, -19224, 2132 2133 -19218, -19212, -19038, -19023, -19018, -19006, -19003, -18996, -18977, 2134 2135 -18961, -18952, -18783, -18774, -18773, -18763, -18756, -18741, -18735, 2136 2137 -18731, -18722, -18710, -18697, -18696, -18526, -18518, -18501, -18490, 2138 2139 -18478, -18463, -18448, -18447, -18446, -18239, -18237, -18231, -18220, 2140 2141 -18211, -18201, -18184, -18183, -18181, -18012, -17997, -17988, -17970, 2142 2143 -17964, -17961, -17950, -17947, -17931, -17928, -17922, -17759, -17752, 2144 2145 -17733, -17730, -17721, -17703, -17701, -17697, -17692, -17683, -17676, 2146 2147 -17496, -17487, -17482, -17468, -17454, -17433, -17427, -17417, -17202, 2148 2149 -17185, -16983, -16970, -16942, -16915, -16733, -16708, -16706, -16689, 2150 2151 -16664, -16657, -16647, -16474, -16470, -16465, -16459, -16452, -16448, 2152 2153 -16433, -16429, -16427, -16423, -16419, -16412, -16407, -16403, -16401, 2154 2155 -16393, -16220, -16216, -16212, -16205, -16202, -16187, -16180, -16171, 2156 2157 -16169, -16158, -16155, -15959, -15958, -15944, -15933, -15920, -15915, 2158 2159 -15903, -15889, -15878, -15707, -15701, -15681, -15667, -15661, -15659, 2160 2161 -15652, -15640, -15631, -15625, -15454, -15448, -15436, -15435, -15419, 2162 2163 -15416, -15408, -15394, -15385, -15377, -15375, -15369, -15363, -15362, 2164 2165 -15183, -15180, -15165, -15158, -15153, -15150, -15149, -15144, -15143, 2166 2167 -15141, -15140, -15139, -15128, -15121, -15119, -15117, -15110, -15109, 2168 2169 -14941, -14937, -14933, -14930, -14929, -14928, -14926, -14922, -14921, 2170 2171 -14914, -14908, -14902, -14894, -14889, -14882, -14873, -14871, -14857, 2172 2173 -14678, -14674, -14670, -14668, -14663, -14654, -14645, -14630, -14594, 2174 2175 -14429, -14407, -14399, -14384, -14379, -14368, -14355, -14353, -14345, 2176 2177 -14170, -14159, -14151, -14149, -14145, -14140, -14137, -14135, -14125, 2178 2179 -14123, -14122, -14112, -14109, -14099, -14097, -14094, -14092, -14090, 2180 2181 -14087, -14083, -13917, -13914, -13910, -13907, -13906, -13905, -13896, 2182 2183 -13894, -13878, -13870, -13859, -13847, -13831, -13658, -13611, -13601, 2184 2185 -13406, -13404, -13400, -13398, -13395, -13391, -13387, -13383, -13367, 2186 2187 -13359, -13356, -13343, -13340, -13329, -13326, -13318, -13147, -13138, 2188 2189 -13120, -13107, -13096, -13095, -13091, -13076, -13068, -13063, -13060, 2190 2191 -12888, -12875, -12871, -12860, -12858, -12852, -12849, -12838, -12831, 2192 2193 -12829, -12812, -12802, -12607, -12597, -12594, -12585, -12556, -12359, 2194 2195 -12346, -12320, -12300, -12120, -12099, -12089, -12074, -12067, -12058, 2196 2197 -12039, -11867, -11861, -11847, -11831, -11798, -11781, -11604, -11589, 2198 2199 -11536, -11358, -11340, -11339, -11324, -11303, -11097, -11077, -11067, 2200 2201 -11055, -11052, -11045, -11041, -11038, -11024, -11020, -11019, -11018, 2202 2203 -11014, -10838, -10832, -10815, -10800, -10790, -10780, -10764, -10587, 2204 2205 -10544, -10533, -10519, -10331, -10329, -10328, -10322, -10315, -10309, 2206 2207 -10307, -10296, -10281, -10274, -10270, -10262, -10260, -10256, -10254 2208 2209 }; 2210 2211 private static string[] pyName = new string[] 2212 2213 { 2214 "A", "Ai", "An", "Ang", "Ao", "Ba", "Bai", "Ban", "Bang", "Bao", "Bei", 2215 2216 "Ben", "Beng", "Bi", "Bian", "Biao", "Bie", "Bin", "Bing", "Bo", "Bu", 2217 2218 "Ba", "Cai", "Can", "Cang", "Cao", "Ce", "Ceng", "Cha", "Chai", "Chan", 2219 2220 "Chang", "Chao", "Che", "Chen", "Cheng", "Chi", "Chong", "Chou", "Chu", 2221 2222 "Chuai", "Chuan", "Chuang", "Chui", "Chun", "Chuo", "Ci", "Cong", "Cou", 2223 2224 "Cu", "Cuan", "Cui", "Cun", "Cuo", "Da", "Dai", "Dan", "Dang", "Dao", "De", 2225 2226 "Deng", "Di", "Dian", "Diao", "Die", "Ding", "Diu", "Dong", "Dou", "Du", 2227 2228 "Duan", "Dui", "Dun", "Duo", "E", "En", "Er", "Fa", "Fan", "Fang", "Fei", 2229 2230 "Fen", "Feng", "Fo", "Fou", "Fu", "Ga", "Gai", "Gan", "Gang", "Gao", "Ge", 2231 2232 "Gei", "Gen", "Geng", "Gong", "Gou", "Gu", "Gua", "Guai", "Guan", "Guang", 2233 2234 "Gui", "Gun", "Guo", "Ha", "Hai", "Han", "Hang", "Hao", "He", "Hei", "Hen", 2235 2236 "Heng", "Hong", "Hou", "Hu", "Hua", "Huai", "Huan", "Huang", "Hui", "Hun", 2237 2238 "Huo", "Ji", "Jia", "Jian", "Jiang", "Jiao", "Jie", "Jin", "Jing", "Jiong", 2239 2240 "Jiu", "Ju", "Juan", "Jue", "Jun", "Ka", "Kai", "Kan", "Kang", "Kao", "Ke", 2241 2242 "Ken", "Keng", "Kong", "Kou", "Ku", "Kua", "Kuai", "Kuan", "Kuang", "Kui", 2243 2244 "Kun", "Kuo", "La", "Lai", "Lan", "Lang", "Lao", "Le", "Lei", "Leng", "Li", 2245 2246 "Lia", "Lian", "Liang", "Liao", "Lie", "Lin", "Ling", "Liu", "Long", "Lou", 2247 2248 "Lu", "Lv", "Luan", "Lue", "Lun", "Luo", "Ma", "Mai", "Man", "Mang", "Mao", 2249 2250 "Me", "Mei", "Men", "Meng", "Mi", "Mian", "Miao", "Mie", "Min", "Ming", "Miu", 2251 2252 "Mo", "Mou", "Mu", "Na", "Nai", "Nan", "Nang", "Nao", "Ne", "Nei", "Nen", 2253 2254 "Neng", "Ni", "Nian", "Niang", "Niao", "Nie", "Nin", "Ning", "Niu", "Nong", 2255 2256 "Nu", "Nv", "Nuan", "Nue", "Nuo", "O", "Ou", "Pa", "Pai", "Pan", "Pang", 2257 2258 "Pao", "Pei", "Pen", "Peng", "Pi", "Pian", "Piao", "Pie", "Pin", "Ping", 2259 2260 "Po", "Pu", "Qi", "Qia", "Qian", "Qiang", "Qiao", "Qie", "Qin", "Qing", 2261 2262 "Qiong", "Qiu", "Qu", "Quan", "Que", "Qun", "Ran", "Rang", "Rao", "Re", 2263 2264 "Ren", "Reng", "Ri", "Rong", "Rou", "Ru", "Ruan", "Rui", "Run", "Ruo", 2265 2266 "Sa", "Sai", "San", "Sang", "Sao", "Se", "Sen", "Seng", "Sha", "Shai", 2267 2268 "Shan", "Shang", "Shao", "She", "Shen", "Sheng", "Shi", "Shou", "Shu", 2269 2270 "Shua", "Shuai", "Shuan", "Shuang", "Shui", "Shun", "Shuo", "Si", "Song", 2271 2272 "Sou", "Su", "Suan", "Sui", "Sun", "Suo", "Ta", "Tai", "Tan", "Tang", 2273 2274 "Tao", "Te", "Teng", "Ti", "Tian", "Tiao", "Tie", "Ting", "Tong", "Tou", 2275 2276 "Tu", "Tuan", "Tui", "Tun", "Tuo", "Wa", "Wai", "Wan", "Wang", "Wei", 2277 2278 "Wen", "Weng", "Wo", "Wu", "Xi", "Xia", "Xian", "Xiang", "Xiao", "Xie", 2279 2280 "Xin", "Xing", "Xiong", "Xiu", "Xu", "Xuan", "Xue", "Xun", "Ya", "Yan", 2281 2282 "Yang", "Yao", "Ye", "Yi", "Yin", "Ying", "Yo", "Yong", "You", "Yu", 2283 2284 "Yuan", "Yue", "Yun", "Za", "Zai", "Zan", "Zang", "Zao", "Ze", "Zei", 2285 2286 "Zen", "Zeng", "Zha", "Zhai", "Zhan", "Zhang", "Zhao", "Zhe", "Zhen", 2287 2288 "Zheng", "Zhi", "Zhong", "Zhou", "Zhu", "Zhua", "Zhuai", "Zhuan", 2289 2290 "Zhuang", "Zhui", "Zhun", "Zhuo", "Zi", "Zong", "Zou", "Zu", "Zuan", 2291 2292 "Zui", "Zun", "Zuo" 2293 }; 2294 2295 #region 二級漢字 2296 /// <summary> 2297 /// 二級漢字數組 2298 /// </summary> 2299 private static string[] otherChinese = new string[] 2300 { 2301 "亍","丌","兀","丐","廿","卅","丕","亘","丞","鬲","孬","噩","丨","禺","丿" 2302 ,"匕","乇","夭","爻","卮","氐","囟","胤","馗","毓","睾","鞀","丶","亟","鼐","乜" 2303 ,"乩","亓","羋","孛","嗇","嘏","仄","厙","厝","厴","厥","廝","靨","贗","匚","叵" 2304 ,"匭","匱","匾","賾","卦","卣","刂","刈","刎","剄","刳","劌","剴","剌","剞","剡" 2305 ,"剜","蒯","剽","劂","劁","劐","劓","冂","罔","亻","仃","仉","仂","仨","仡","仫" 2306 ,"仞","傴","仳","伢","佤","仵","倀","傖","伉","佇","佞","佧","攸","佚","佝" 2307 ,"佟","佗","伲","伽","佶","佴","侑","侉","侃","侏","佾","佻","儕","佼","儂" 2308 ,"侔","儔","儼","儷","俅","俚","俁","俜","俑","俟","俸","倩","偌","俳","倬","倏" 2309 ,"倮","倭","俾","倜","倌","倥","倨","僨","偃","偕","偈","偎","傯","僂","儻","儐" 2310 ,"儺","傺","僖","儆","僭","僬","僦","僮","儇","儋","仝","氽","佘","僉","俎","龠" 2311 ,"汆","糴","兮","巽","黌","馘","囅","夔","勹","匍","訇","匐","鳧","夙","兕","亠" 2312 ,"兗","亳","袞","袤","褻","臠","裒","稟","嬴","蠃","羸","冫","冱","冽","冼" 2313 ,"凇","冖","冢","冥","訁","訐","訌","訕","謳","詎","訥","詁","訶","詆","詔" 2314 ,"詘","詒","誆","誄","詿","詰","詼","詵","詬","詮","諍","諢","詡","誚","誥","誑" 2315 ,"誒","諏","諑","諉","諛","諗","諂","誶","諶","諫","謔","謁","諤","諭","諼","諳" 2316 ,"諦","諮","諞","謨","讜","謖","謚","謐","謫","譾","譖","譙","譎","讞","譫","讖" 2317 ,"卩","巹","阝","阢","阡","阱","阪","阽","阼","陂","陘","陔","陟","隉","陬","陲" 2318 ,"陴","隈","隍","隗","隰","邗","邛","鄺","邙","鄔","邡","邴","邳","邶","鄴" 2319 ,"邸","邰","郟","郅","邾","鄶","郄","郇","鄆","酈","郢","郜","郗","郛","郫" 2320 ,"郯","郾","鄄","鄢","鄞","鄣","鄱","鄯","鄹","酃","酆","芻","奐","勱","劬","劭" 2321 ,"劾","哿","勐","勖","勰","叟","燮","矍","廴","凵","凼","鬯","厶","弁","畚","巰" 2322 ,"坌","堊","垡","塾","墼","壅","壑","圩","圬","圪","圳","壙","圮","圯","壢","圻" 2323 ,"坂","坩","壠","坫","壚","坼","坻","坨","坭","坶","坳","埡","垤","垌","塏","埏" 2324 ,"垧","堖","垓","垠","埕","塒","堝","塤","埒","垸","埴","垵","埸","埤","埝" 2325 ,"堋","堍","埽","埭","堀","堞","堙","塄","堠","塥","塬","墁","墉","墚","墀" 2326 ,"馨","鼙","懿","艹","艽","艿","芏","芊","芨","芄","芎","芑","薌","芙","芫","芸" 2327 ,"芾","芰","藶","苊","苣","芘","芷","芮","莧","萇","蓯","芩","芴","芡","芪","芟" 2328 ,"苄","苧","芤","苡","茉","苷","苤","蘢","茇","苜","苴","苒","苘","茌","苻","苓" 2329 ,"蔦","茚","茆","塋","煢","苠","苕","茜","荑","蕘","蓽","茈","莒","茼","茴","茱" 2330 ,"莛","蕎","茯","荏","荇","荃","薈","荀","茗","薺","茭","茺","茳","犖","滎" 2331 ,"蕁","茛","藎","蕒","蓀","葒","葤","莰","荸","蒔","萵","莠","莪","莓","莜" 2332 ,"蒞","荼","薟","莩","荽","蕕","荻","莘","莞","莨","鶯","蒓","菁","萁","菥","菘" 2333 ,"堇","萘","萋","菝","菽","菖","萜","萸","萑","萆","菔","菟","萏","萃","菸","菹" 2334 ,"菪","菅","菀","縈","菰","菡","葜","葑","葚","葙","葳","蕆","蒈","葺","蕢","葸" 2335 ,"萼","葆","葩","葶","蔞","蒎","萱","葭","蓁","蓍","蓐","驀","蒽","蓓","蓊","蒿" 2336 ,"蒺","蘺","蒡","蒹","蒴","蒗","鎣","蕷","蔌","甍","蔸","蓰","蘞","蔟","藺" 2337 ,"蕖","蔻","蓿","蓼","蕙","蕈","蕨","蕤","蕞","蕺","瞢","蕃","蘄","蕻","薤" 2338 ,"薨","薇","薏","蕹","藪","薜","薅","薹","薷","薰","蘚","藁","藜","藿","蘧","蘅" 2339 ,"蘩","櫱","蘼","廾","弈","夼","奩","耷","奕","奚","奘","匏","尢","尥","尬","尷" 2340 ,"扌","捫","摶","抻","拊","拚","拗","拮","撟","拶","挹","捋","捃","掭","揶","捱" 2341 ,"捺","掎","摑","捭","掬","掊","捩","掮","摜","揲","揸","揠","撳","揄","揞","揎" 2342 ,"摒","揆","掾","攄","摁","搋","搛","搠","搌","搦","搡","摞","攖","摭","撖" 2343 ,"摺","擷","擼","撙","攛","擀","擐","擗","擤","擢","攉","攥","攮","弋","忒" 2344 ,"甙","弒","卟","叱","嘰","叩","叨","叻","吒","吖","吆","呋","嘸","囈","呔","嚦" 2345 ,"呃","吡","唄","咼","唚","吲","咂","咔","呷","呱","呤","咚","嚀","咄","呶","呦" 2346 ,"噝","哐","咭","哂","咴","噠","咧","咦","嘵","嗶","呲","咣","噦","咻","咿","哌" 2347 ,"噲","哚","嚌","咩","咪","吒","噥","哏","哞","嘜","哧","嘮","哽","唔","哳","嗩" 2348 ,"唣","唏","唑","唧","唪","嘖","喏","喵","啉","囀","啁","啕","唿","啐","唼" 2349 ,"唷","啖","啵","啶","啷","唳","唰","啜","喋","嗒","喃","喱","喹","喈","喁" 2350 ,"喟","啾","嗖","喑","啻","嗟","嘍","嚳","喔","喙","嗪","嗷","嗉","嘟","嗑","囁" 2351 ,"嗬","嗔","嗦","嗝","嗄","嗯","嗥","嗲","噯","嗌","嗍","嗨","嗵","嗤","轡","嘞" 2352 ,"嘈","嘌","嘁","嚶","嘣","嗾","嘀","嘧","嘭","噘","嘹","噗","嘬","噍","噢","噙" 2353 ,"嚕","噌","噔","嚆","噤","噱","噫","噻","噼","嚅","嚓","嚯","囔","囗","囝","囡" 2354 ,"圇","囫","囹","囿","圄","圊","圉","圜","幃","帙","帔","帑","幬","幘","幗" 2355 ,"帷","幄","幔","幛","襆","幡","岌","屺","岍","岐","嶇","岈","峴","嶴","岑" 2356 ,"嵐","岜","岵","岢","崬","岬","岫","岱","岣","峁","岷","嶧","峒","嶠","峋","崢" 2357 ,"嶗","崍","崧","崦","崮","崤","崞","崆","崛","嶸","崾","崴","崽","嵬","嵛","嵯" 2358 ,"嶁","嵫","嵋","嵊","嵩","嵴","嶂","嶙","嶝","豳","嶷","巔","彳","彷","徂","徇" 2359 ,"徉","後","徠","徙","徜","徨","徭","徵","徼","衢","彡","犭","犰","犴","獷","獁" 2360 ,"狃","狁","狎","狍","狒","狨","獪","狩","猻","狴","狷","猁","狳","獫","狺" 2361 ,"狻","猗","猓","玀","猊","猞","猝","獼","猢","猹","猥","蝟","猸","猱","獐" 2362 ,"獍","獗","獠","獬","獯","獾","舛","夥","飧","夤","夂","飠","餳","飩","餼","飪" 2363 ,"飫","飭","飴","餉","餑","餘","餛","餷","餿","饃","饈","饉","饊","饌","饢","庀" 2364 ,"廡","庋","庖","庥","庠","庹","庵","庾","庳","賡","廒","廑","廛","廨","廩","膺" 2365 ,"忄","忉","忖","懺","憮","忮","慪","忡","忤","愾","悵","愴","忪","忭","忸","怙" 2366 ,"怵","怦","怛","怏","怍","怩","怫","怊","懌","怡","慟","懨","惻","愷","恂" 2367 ,"恪","惲","悖","悚","慳","悝","悃","悒","悌","悛","愜","悻","悱","惝","惘" 2368 ,"惆","惚","悴","慍","憒","愕","愣","惴","愀","愎","愫","慊","慵","憬","憔","憧" 2369 ,"憷","懍","懵","忝","隳","閂","閆","闈","閎","閔","閌","闥","閭","閫","鬮","閬" 2370 ,"閾","閶","鬩","閿","閽","閼","闃","闋","闔","闐","闕","闞","丬","爿","戕","氵" 2371 ,"汔","汜","汊","灃","沅","沐","沔","沌","汨","汩","汴","汶","沆","溈","泐","泔" 2372 ,"沭","瀧","瀘","泱","泗","沲","泠","泖","濼","泫","泮","沱","泓","泯","涇" 2373 ,"洹","洧","洌","浹","湞","洇","洄","洙","洎","洫","澮","洮","洵","洚","瀏" 2374 ,"滸","潯","洳","涑","浯","淶","潿","浞","涓","涔","浜","浠","浼","浣","渚","淇" 2375 ,"淅","淞","瀆","涿","淠","澠","淦","淝","淙","瀋","涫","淥","涮","渫","湮","湎" 2376 ,"湫","溲","湟","漵","湓","湔","渲","渥","湄","灧","溱","溘","灄","漭","瀅","溥" 2377 ,"溧","溽","溻","溷","潷","溴","滏","溏","滂","溟","潢","瀠","瀟","灠","漕","滹" 2378 ,"漯","漶","瀲","瀦","漪","漉","漩","澉","澍","澌","潸","潲","潼","潺","瀨" 2379 ,"濉","澧","澹","澶","濂","濡","濮","濞","濠","濯","瀚","瀣","瀛","瀹","瀵" 2380 ,"灝","灞","宀","宄","宕","宓","宥","宸","甯","騫","搴","寤","寮","褰","寰","蹇" 2381 ,"謇","辶","迓","迕","迥","迮","迤","邇","迦","逕","迨","逅","逄","逋","邐","逑" 2382 ,"逍","逖","逡","逵","逶","逭","逯","遄","遑","遒","遐","遨","遘","遢","遛","暹" 2383 ,"遴","遽","邂","邈","邃","邋","彐","彗","彖","彘","尻","咫","屐","屙","孱","屣" 2384 ,"屨","羼","弳","弩","弭","艴","弼","鬻","屮","妁","妃","妍","嫵","嫗","妣" 2385 ,"妗","姊","媯","妞","妤","姒","妲","妯","姍","妾","婭","嬈","姝","孌","姣" 2386 ,"姘","奼","娌","娉","媧","嫻","娑","娣","娓","婀","婧","婊","婕","娼","婢","嬋" 2387 ,"胬","媼","媛","婷","婺","媾","嫫","媲","嬡","嬪","媸","嫠","嫣","嬙","嫖","嫦" 2388 ,"嫘","嫜","嬉","嬗","嬖","嬲","嬤","孀","尕","尜","孚","孥","孳","孑","孓","孢" 2389 ,"駔","駟","駙","騶","驛","駑","駘","驍","驊","駢","驪","騏","騍","騅","驂","騭" 2390 ,"騖","驁","騮","騸","驃","驄","驏","驥","驤","糹","紆","紂","紇","紈","纊" 2391 ,"紜","紕","紓","紺","紲","紱","縐","紼","絀","紿","絝","絎","絳","綆","綃" 2392 ,"綈","綾","綺","緋","緔","緄","綞","綬","綹","綣","綰","緇","緙","緗","緹","緲" 2393 ,"繢","緦","緶","緱","縋","緡","縉","縝","縟","縞","縭","縊","縑","繽","縹","縵" 2394 ,"縲","繆","繅","纈","繚","繒","韁","繾","繰","繯","纘","幺","畿","巛","甾","邕" 2395 ,"玎","璣","瑋","玢","玟","珏","珂","瓏","玷","玳","珀","珉","珈","珥","珙","頊" 2396 ,"琊","珩","珧","珞","璽","琿","璉","琪","瑛","琦","琥","琨","琰","琮","琬" 2397 ,"琛","琚","瑁","瑜","瑗","瑕","瑙","璦","瑭","瑾","璜","瓔","璀","璁","璇" 2398 ,"璋","璞","璨","璩","璐","璧","瓚","璺","韙","韞","韜","杌","杓","杞","杈","榪" 2399 ,"櫪","枇","杪","杳","枘","梘","杵","棖","樅","梟","枋","杷","杼","柰","櫛","柘" 2400 ,"櫳","柩","枰","櫨","柙","枵","柚","枳","柝","梔","柃","枸","柢","櫟","柁","檉" 2401 ,"栲","栳","椏","橈","桎","楨","桄","榿","梃","栝","桕","樺","桁","檜","桀","欒" 2402 ,"桊","桉","栩","梵","梏","桴","桷","梓","桫","欞","楮","棼","櫝","槧","棹" 2403 ,"欏","棰","椋","槨","楗","棣","椐","楱","椹","楠","楂","楝","欖","楫","榀" 2404 ,"榘","楸","椴","槌","櫬","櫚","槎","櫸","楦","楣","楹","榛","榧","榻","榫","榭" 2405 ,"槔","榱","槁","槊","檳","榕","櫧","榍","槿","檣","槭","樗","樘","櫫","槲","橄" 2406 ,"樾","檠","橐","橛","樵","檎","櫓","樽","樨","橘","櫞","檑","檐","檁","檗","檫" 2407 ,"猷","獒","歿","殂","殤","殄","殞","殮","殍","殫","殛","殯","殪","軔","軛","軲" 2408 ,"軻","轤","軹","軼","軫","軤","轢","軺","軾","輊","輇","輅","輒","輦","輞" 2409 ,"輟","輜","輳","轆","轔","軎","戔","戧","戛","戟","戢","戡","戥","戤","戩" 2410 ,"臧","甌","瓴","瓿","甏","甑","甓","攴","旮","旯","旰","昊","曇","杲","昃","昕" 2411 ,"昀","炅","曷","昝","昴","昱","昶","昵","耆","晟","曄","晁","晏","暉","晡","晗" 2412 ,"晷","暄","暌","曖","暝","暾","曛","曜","曦","曩","賁","貰","貺","貽","贄","貲" 2413 ,"賅","贐","賑","賚","賕","齎","賧","賻","覘","覬","覡","覿","覦","覯","覲","覷" 2414 ,"牮","犟","牝","氂","牯","牾","牿","犄","犋","犍","犏","犒","挈","挲","掰" 2415 ,"搿","擘","耄","毪","毳","毽","毿","毹","氅","氌","氆","氍","氕","氘","氙" 2416 ,"氚","氡","氬","氤","氪","氳","攵","敕","敫","牘","牒","牖","爰","虢","刖","肟" 2417 ,"肜","肓","肼","朊","肽","肱","肫","肭","餚","肷","朧","腖","胩","臚","胛","胂" 2418 ,"胄","胙","胍","胗","朐","胝","脛","胱","胴","胭","膾","脎","胲","胼","朕","脒" 2419 ,"豚","腡","脞","脬","脘","脲","腈","腌","腓","腴","腙","腚","腱","腠","腩","靦" 2420 ,"膃","齶","腧","塍","媵","膈","膂","臏","滕","膣","膪","臌","朦","臊","膻" 2421 ,"臁","膦","歟","欷","欹","歃","歆","歙","颮","颯","颶","颼","飆","飈","殳" 2422 ,"彀","轂","觳","斐","齏","斕","於","旆","旄","旃","旌","旎","旒","旖","煬","煒" 2423 ,"燉","熗","炻","烀","炷","炫","炱","燁","烊","焐","焓","燜","焯","焱","煳","煜" 2424 ,"煨","煅","煲","煊","煸","煺","熘","熳","熵","熨","熠","燠","燔","燧","燹","爝" 2425 ,"爨","灬","燾","煦","熹","戾","戽","扃","扈","扉","礻","祀","祆","祉","祛","祜" 2426 ,"祓","祚","禰","祗","祠","禎","祧","祺","禪","禊","禚","禧","禳","忑","忐" 2427 ,"懟","恝","恚","恧","恁","恙","恣","愨","愆","愍","慝","憩","憝","懋","懣" 2428 ,"戇","肀","聿","沓","澩","淼","磯","矸","碭","砉","硨","砘","砑","斫","砭","碸" 2429 ,"砝","砹","礪","礱","砟","砼","砥","砬","砣","砩","硎","硭","硤","磽","砦","硐" 2430 ,"硇","硌","硪","磧","碓","碚","碇","磣","碡","碣","碲","碹","碥","磔","磙","磉" 2431 ,"磬","磲","礅","磴","礓","礤","礞","礴","龕","黹","黻","黼","盱","眄","瞘","盹" 2432 ,"眇","眈","眚","眢","眙","眭","眥","眵","眸","睞","瞼","睇","睃","睚","睨" 2433 ,"睢","睥","睿","瞍","睽","瞀","瞌","瞑","瞟","瞠","瞰","瞵","瞽","町","畀" 2434 ,"畎","畋","畈","畛","畲","畹","疃","罘","罡","罟","詈","罨","羆","罱","罹","羈" 2435 ,"罾","盍","盥","蠲","釒","釓","釔","釙","釗","釕","釷","釧","釤","鍆","釵","釹" 2436 ,"鈈","鈦","鉅","鈑","鈐","鈁","鈧","鈄","鈥","鈀","鈺","鉦","鈷","鈳","鉕","鈽" 2437 ,"鈸","鉞","鉬","鉭","鈿","鑠","鈰","鉉","鉈","鉍","鈮","鈹","鐸","銬","銠","鉺" 2438 ,"銪","鋮","鋏","鐃","鋣","鐺","銱","銦","鎧","銖","鋌","銩","鏵","銓","鉿" 2439 ,"鎩","銚","錚","銫","銃","鐋","銨","銣","鐒","錸","鋱","鏗","鋥","鋰","鋯" 2440 ,"鋨","銼","鋝","鋶","鐦","鐧","鋃","鋟","鋦","錒","錆","鍩","錛","鍀","錁","錕" 2441 ,"錮","鍃","錇","錈","錟","錙","鍥","鍇","鍶","鍔","鍤","鎪","鍰","鎄","鏤","鏘" 2442 ,"鐨","鎇","鏌","鎘","鐫","鎿","鎦","鎰","鎵","鑌","鏢","鏜","鏝","鏍","鏞","鏃" 2443 ,"鏇","鏑","鐔","钁","鏷","鑥","鐓","鑭","鐠","鑹","鏹","鐙","鑊","鐲","鐿","鑔" 2444 ,"鑣","鍾","矧","矬","雉","秕","秭","秣","秫","穭","嵇","稃","稂","稞","稔" 2445 ,"稹","稷","穡","黏","馥","穰","皈","皎","皓","皙","皤","瓞","瓠","甬","鳩" 2446 ,"鳶","鴇","鴆","鴣","鶇","鸕","鴝","鴟","鷥","鴯","鷙","鴰","鵂","鸞","鵓","鸝" 2447 ,"鵠","鵒","鷳","鵜","鵡","鶓","鵪","鵯","鶉","鶘","鶚","鶿","鶥","鶩","鷂","鶼" 2448 ,"鸚","鷓","鷚","鷯","鷦","鷲","鷸","鸌","鷺","鸛","疒","疔","癤","癘","疝","癧" 2449 ,"疣","疳","痾","疸","痄","皰","疰","痃","痂","瘂","痍","痣","癆","痦","痤","癇" 2450 ,"痧","瘃","痱","痼","痿","瘐","瘀","癉","瘌","瘞","瘊","瘥","瘺","瘕","瘙" 2451 ,"瘛","瘼","瘢","瘠","癀","瘭","瘰","癭","瘵","癃","癮","瘳","癍","癩","癔" 2452 ,"癜","癖","癲","癯","翊","竦","穸","穹","窀","窆","窈","窕","竇","窠","窬","窨" 2453 ,"窶","窳","衤","衩","衲","衽","衿","袂","袢","襠","袷","袼","裉","褳","裎","襝" 2454 ,"襇","裱","褚","裼","裨","裾","裰","褡","褙","褓","褸","褊","襤","褫","褶","襁" 2455 ,"襦","襻","疋","胥","皸","皴","矜","耒","耔","耖","耜","耠","耮","耥","耦","耬" 2456 ,"耩","耨","耱","耋","耵","聃","聆","聹","聒","聵","聱","覃","頇","頎","頏" 2457 ,"頡","頜","潁","頦","頷","顎","顓","顳","顢","顙","顥","顬","顰","虍","虔" 2458 ,"虯","蟣","蠆","虺","虼","虻","蚨","蚍","蚋","蜆","蚝","蚧","蚣","蚪","蚓","蚩" 2459 ,"蚶","蛄","蚵","蠣","蚰","蚺","蚱","蚯","蛉","蟶","蚴","蛩","蛺","蟯","蛭","螄" 2460 ,"蛐","蜓","蛞","蠐","蛟","蛘","蛑","蜃","蜇","蛸","蜈","蜊","蜍","蜉","蜣","蜻" 2461 ,"蜞","蜥","蜮","蜚","蜾","蟈","蜴","蜱","蜩","蜷","蜿","螂","蜢","蝽","蠑","蝻" 2462 ,"蝠","蝰","蝌","蝮","螋","蝓","蝣","螻","蝤","蝙","蝥","螓","螯","蟎","蟒" 2463 ,"蟆","螈","螅","螭","螗","螃","螫","蟥","螬","螵","螳","蟋","蟓","螽","蟑" 2464 ,"蟀","蟊","蟛","蟪","蟠","蟮","蠖","蠓","蟾","蠊","蠛","蠡","蠹","蠼","缶","罌" 2465 ,"罄","罅","舐","竺","竽","笈","篤","笄","筧","笊","笫","笏","筇","笸","笪","笙" 2466 ,"笮","笱","笠","笥","笤","笳","籩","笞","筘","篳","筅","筵","筌","箏","筠","筮" 2467 ,"筻","筢","筲","筱","箐","簀","篋","箸","箬","箝","籜","箅","簞","箜","箢","簫" 2468 ,"箴","簣","篁","篌","篝","篚","篥","篦","篪","簌","篾","篼","簏","籪","簋" 2469 ,"簟","簪","簦","簸","籟","籀","臾","舁","舂","舄","臬","衄","舡","舢","艤" 2470 ,"舭","舯","舨","舫","舸","艫","舳","舴","舾","艄","艉","艋","艏","艚","艟","艨" 2471 ,"衾","裊","袈","裘","裟","襞","羝","羥","羧","羯","羰","羲","秈","敉","粑","糲" 2472 ,"糶","粞","粢","粲","粼","粽","糝","餱","糌","糍","糈","糅","糗","糨","艮","暨" 2473 ,"羿","翎","翕","翥","翡","翦","翩","翮","翳","糸","縶","綦","綮","繇","纛","麩" 2474 ,"麴","赳","趄","趔","趑","趲","赧","赭","豇","豉","酊","酐","酎","酏","酤" 2475 ,"酢","酡","酰","酩","酯","釅","釃","酲","酴","酹","醌","醅","醐","醍","醑" 2476 ,"醢","醣","醪","醭","醮","醯","醵","醴","醺","豕","鹺","躉","跫","踅","蹙","蹩" 2477 ,"趵","趿","趼","趺","蹌","跖","跗","跚","躒","跎","跏","跛","跆","跬","蹺","蹕" 2478 ,"跣","躚","躋","跤","踉","跽","踔","踝","踟","躓","踮","踣","躑","踺","蹀","踹" 2479 ,"踵","踽","踱","蹉","蹁","蹂","躡","蹣","蹊","躕","蹶","蹼","蹯","蹴","躅","躪" 2480 ,"躔","躐","躦","躞","豸","貂","貊","貅","貘","貔","斛","觖","觴","觚","觜" 2481 ,"觥","觫","觶","訾","謦","靚","雩","靂","雯","霆","霽","霈","霏","霎","霪" 2482 ,"靄","霰","霾","齔","齟","齙","齠","齜","齦","齬","齪","齷","黽","黿","鼉","隹" 2483 ,"隼","雋","雎","雒","瞿","讎","銎","鑾","鋈","鏨","鍪","鏊","鎏","鐾","鑫","魷" 2484 ,"魴","鮁","鮃","鯰","鱸","穌","鮒","鱟","鮐","鮭","鮚","鮪","鮞","鱭","鮫","鯗" 2485 ,"鱘","鯁","鱺","鰱","鰹","鰣","鰷","鯀","鯊","鯇","鯽","鯖","鯪","鯫","鯡","鯤" 2486 ,"鯧","鯝","鯢","鯰","鯛","鯴","鯔","鱝","鰈","鱷","鰍","鰒","鰉","鯿","鰠" 2487 ,"鰲","鰭","鰨","鰥","鰩","鰳","鰾","鱈","鰻","鰵","鱅","鱖","鱔","鱒","鱧" 2488 ,"靼","鞅","韃","鞽","鞔","韉","鞫","鞣","韝","鞴","骱","骰","骷","鶻","骶","骺" 2489 ,"骼","髁","髀","髏","髂","髖","髕","髑","魅","魃","魘","魎","魈","魍","魑","饗" 2490 ,"饜","餮","饕","饔","髟","髡","髦","髯","髫","髻","髭","髹","鬈","鬏","鬢","鬟" 2491 ,"鬣","麽","麾","縻","麂","麇","麈","麋","麒","鏖","麝","麟","黛","黜","黝","黠" 2492 ,"黟","黢","黷","黧","黥","黲","黯","鼢","鼬","鼯","鼴","鼷","鼽","鼾","齇" 2493 }; 2494 2495 /// <summary> 2496 /// 二級漢字對應拼音數組 2497 /// </summary> 2498 private static string[] otherPinYin = new string[] 2499 { 2500 "Chu","Ji","Wu","Gai","Nian","Sa","Pi","Gen","Cheng","Ge","Nao","E","Shu","Yu","Pie","Bi", 2501 "Tuo","Yao","Yao","Zhi","Di","Xin","Yin","Kui","Yu","Gao","Tao","Dian","Ji","Nai","Nie","Ji", 2502 "Qi","Mi","Bei","Se","Gu","Ze","She","Cuo","Yan","Jue","Si","Ye","Yan","Fang","Po","Gui", 2503 "Kui","Bian","Ze","Gua","You","Ce","Yi","Wen","Jing","Ku","Gui","Kai","La","Ji","Yan","Wan", 2504 "Kuai","Piao","Jue","Qiao","Huo","Yi","Tong","Wang","Dan","Ding","Zhang","Le","Sa","Yi","Mu","Ren", 2505 "Yu","Pi","Ya","Wa","Wu","Chang","Cang","Kang","Zhu","Ning","Ka","You","Yi","Gou","Tong","Tuo", 2506 "Ni","Ga","Ji","Er","You","Kua","Kan","Zhu","Yi","Tiao","Chai","Jiao","Nong","Mou","Chou","Yan", 2507 "Li","Qiu","Li","Yu","Ping","Yong","Si","Feng","Qian","Ruo","Pai","Zhuo","Shu","Luo","Wo","Bi", 2508 "Ti","Guan","Kong","Ju","Fen","Yan","Xie","Ji","Wei","Zong","Lou","Tang","Bin","Nuo","Chi","Xi", 2509 "Jing","Jian","Jiao","Jiu","Tong","Xuan","Dan","Tong","Tun","She","Qian","Zu","Yue","Cuan","Di","Xi", 2510 "Xun","Hong","Guo","Chan","Kui","Bao","Pu","Hong","Fu","Fu","Su","Si","Wen","Yan","Bo","Gun", 2511 "Mao","Xie","Luan","Pou","Bing","Ying","Luo","Lei","Liang","Hu","Lie","Xian","Song","Ping","Zhong","Ming", 2512 "Yan","Jie","Hong","Shan","Ou","Ju","Ne","Gu","He","Di","Zhao","Qu","Dai","Kuang","Lei","Gua", 2513 "Jie","Hui","Shen","Gou","Quan","Zheng","Hun","Xu","Qiao","Gao","Kuang","Ei","Zou","Zhuo","Wei","Yu", 2514 "Shen","Chan","Sui","Chen","Jian","Xue","Ye","E","Yu","Xuan","An","Di","Zi","Pian","Mo","Dang", 2515 "Su","Shi","Mi","Zhe","Jian","Zen","Qiao","Jue","Yan","Zhan","Chen","Dan","Jin","Zuo","Wu","Qian", 2516 "Jing","Ban","Yan","Zuo","Bei","Jing","Gai","Zhi","Nie","Zou","Chui","Pi","Wei","Huang","Wei","Xi", 2517 "Han","Qiong","Kuang","Mang","Wu","Fang","Bing","Pi","Bei","Ye","Di","Tai","Jia","Zhi","Zhu","Kuai", 2518 "Qie","Xun","Yun","Li","Ying","Gao","Xi","Fu","Pi","Tan","Yan","Juan","Yan","Yin","Zhang","Po", 2519 "Shan","Zou","Ling","Feng","Chu","Huan","Mai","Qu","Shao","He","Ge","Meng","Xu","Xie","Sou","Xie", 2520 "Jue","Jian","Qian","Dang","Chang","Si","Bian","Ben","Qiu","Ben","E","Fa","Shu","Ji","Yong","He", 2521 "Wei","Wu","Ge","Zhen","Kuang","Pi","Yi","Li","Qi","Ban","Gan","Long","Dian","Lu","Che","Di", 2522 "Tuo","Ni","Mu","Ao","Ya","Die","Dong","Kai","Shan","Shang","Nao","Gai","Yin","Cheng","Shi","Guo", 2523 "Xun","Lie","Yuan","Zhi","An","Yi","Pi","Nian","Peng","Tu","Sao","Dai","Ku","Die","Yin","Leng", 2524 "Hou","Ge","Yuan","Man","Yong","Liang","Chi","Xin","Pi","Yi","Cao","Jiao","Nai","Du","Qian","Ji", 2525 "Wan","Xiong","Qi","Xiang","Fu","Yuan","Yun","Fei","Ji","Li","E","Ju","Pi","Zhi","Rui","Xian", 2526 "Chang","Cong","Qin","Wu","Qian","Qi","Shan","Bian","Zhu","Kou","Yi","Mo","Gan","Pie","Long","Ba", 2527 "Mu","Ju","Ran","Qing","Chi","Fu","Ling","Niao","Yin","Mao","Ying","Qiong","Min","Tiao","Qian","Yi", 2528 "Rao","Bi","Zi","Ju","Tong","Hui","Zhu","Ting","Qiao","Fu","Ren","Xing","Quan","Hui","Xun","Ming", 2529 "Qi","Jiao","Chong","Jiang","Luo","Ying","Qian","Gen","Jin","Mai","Sun","Hong","Zhou","Kan","Bi","Shi", 2530 "Wo","You","E","Mei","You","Li","Tu","Xian","Fu","Sui","You","Di","Shen","Guan","Lang","Ying", 2531 "Chun","Jing","Qi","Xi","Song","Jin","Nai","Qi","Ba","Shu","Chang","Tie","Yu","Huan","Bi","Fu", 2532 "Tu","Dan","Cui","Yan","Zu","Dang","Jian","Wan","Ying","Gu","Han","Qia","Feng","Shen","Xiang","Wei", 2533 "Chan","Kai","Qi","Kui","Xi","E","Bao","Pa","Ting","Lou","Pai","Xuan","Jia","Zhen","Shi","Ru", 2534 "Mo","En","Bei","Weng","Hao","Ji","Li","Bang","Jian","Shuo","Lang","Ying","Yu","Su","Meng","Dou", 2535 "Xi","Lian","Cu","Lin","Qu","Kou","Xu","Liao","Hui","Xun","Jue","Rui","Zui","Ji","Meng","Fan", 2536 "Qi","Hong","Xie","Hong","Wei","Yi","Weng","Sou","Bi","Hao","Tai","Ru","Xun","Xian","Gao","Li", 2537 "Huo","Qu","Heng","Fan","Nie","Mi","Gong","Yi","Kuang","Lian","Da","Yi","Xi","Zang","Pao","You", 2538 "Liao","Ga","Gan","Ti","Men","Tuan","Chen","Fu","Pin","Niu","Jie","Jiao","Za","Yi","Lv","Jun", 2539 "Tian","Ye","Ai","Na","Ji","Guo","Bai","Ju","Pou","Lie","Qian","Guan","Die","Zha","Ya","Qin", 2540 "Yu","An","Xuan","Bing","Kui","Yuan","Shu","En","Chuai","Jian","Shuo","Zhan","Nuo","Sang","Luo","Ying", 2541 "Zhi","Han","Zhe","Xie","Lu","Zun","Cuan","Gan","Huan","Pi","Xing","Zhuo","Huo","Zuan","Nang","Yi", 2542 "Te","Dai","Shi","Bu","Chi","Ji","Kou","Dao","Le","Zha","A","Yao","Fu","Mu","Yi","Tai", 2543 "Li","E","Bi","Bei","Guo","Qin","Yin","Za","Ka","Ga","Gua","Ling","Dong","Ning","Duo","Nao", 2544 "You","Si","Kuang","Ji","Shen","Hui","Da","Lie","Yi","Xiao","Bi","Ci","Guang","Yue","Xiu","Yi", 2545 "Pai","Kuai","Duo","Ji","Mie","Mi","Zha","Nong","Gen","Mou","Mai","Chi","Lao","Geng","En","Zha", 2546 "Suo","Zao","Xi","Zuo","Ji","Feng","Ze","Nuo","Miao","Lin","Zhuan","Zhou","Tao","Hu","Cui","Sha", 2547 "Yo","Dan","Bo","Ding","Lang","Li","Shua","Chuo","Die","Da","Nan","Li","Kui","Jie","Yong","Kui", 2548 "Jiu","Sou","Yin","Chi","Jie","Lou","Ku","Wo","Hui","Qin","Ao","Su","Du","Ke","Nie","He", 2549 "Chen","Suo","Ge","A","En","Hao","Dia","Ai","Ai","Suo","Hei","Tong","Chi","Pei","Lei","Cao", 2550 "Piao","Qi","Ying","Beng","Sou","Di","Mi","Peng","Jue","Liao","Pu","Chuai","Jiao","O","Qin","Lu", 2551 "Ceng","Deng","Hao","Jin","Jue","Yi","Sai","Pi","Ru","Cha","Huo","Nang","Wei","Jian","Nan","Lun", 2552 "Hu","Ling","You","Yu","Qing","Yu","Huan","Wei","Zhi","Pei","Tang","Dao","Ze","Guo","Wei","Wo", 2553 "Man","Zhang","Fu","Fan","Ji","Qi","Qian","Qi","Qu","Ya","Xian","Ao","Cen","Lan","Ba","Hu", 2554 "Ke","Dong","Jia","Xiu","Dai","Gou","Mao","Min","Yi","Dong","Qiao","Xun","Zheng","Lao","Lai","Song", 2555 "Yan","Gu","Xiao","Guo","Kong","Jue","Rong","Yao","Wai","Zai","Wei","Yu","Cuo","Lou","Zi","Mei", 2556 "Sheng","Song","Ji","Zhang","Lin","Deng","Bin","Yi","Dian","Chi","Pang","Cu","Xun","Yang","Hou","Lai", 2557 "Xi","Chang","Huang","Yao","Zheng","Jiao","Qu","San","Fan","Qiu","An","Guang","Ma","Niu","Yun","Xia", 2558 "Pao","Fei","Rong","Kuai","Shou","Sun","Bi","Juan","Li","Yu","Xian","Yin","Suan","Yi","Guo","Luo", 2559 "Ni","She","Cu","Mi","Hu","Cha","Wei","Wei","Mei","Nao","Zhang","Jing","Jue","Liao","Xie","Xun", 2560 "Huan","Chuan","Huo","Sun","Yin","Dong","Shi","Tang","Tun","Xi","Ren","Yu","Chi","Yi","Xiang","Bo", 2561 "Yu","Hun","Zha","Sou","Mo","Xiu","Jin","San","Zhuan","Nang","Pi","Wu","Gui","Pao","Xiu","Xiang", 2562 "Tuo","An","Yu","Bi","Geng","Ao","Jin","Chan","Xie","Lin","Ying","Shu","Dao","Cun","Chan","Wu", 2563 "Zhi","Ou","Chong","Wu","Kai","Chang","Chuang","Song","Bian","Niu","Hu","Chu","Peng","Da","Yang","Zuo", 2564 "Ni","Fu","Chao","Yi","Yi","Tong","Yan","Ce","Kai","Xun","Ke","Yun","Bei","Song","Qian","Kui", 2565 "Kun","Yi","Ti","Quan","Qie","Xing","Fei","Chang","Wang","Chou","Hu","Cui","Yun","Kui","E","Leng", 2566 "Zhui","Qiao","Bi","Su","Qie","Yong","Jing","Qiao","Chong","Chu","Lin","Meng","Tian","Hui","Shuan","Yan", 2567 "Wei","Hong","Min","Kang","Ta","Lv","Kun","Jiu","Lang","Yu","Chang","Xi","Wen","Hun","E","Qu", 2568 "Que","He","Tian","Que","Kan","Jiang","Pan","Qiang","San","Qi","Si","Cha","Feng","Yuan","Mu","Mian", 2569 "Dun","Mi","Gu","Bian","Wen","Hang","Wei","Le","Gan","Shu","Long","Lu","Yang","Si","Duo","Ling", 2570 "Mao","Luo","Xuan","Pan","Duo","Hong","Min","Jing","Huan","Wei","Lie","Jia","Zhen","Yin","Hui","Zhu", 2571 "Ji","Xu","Hui","Tao","Xun","Jiang","Liu","Hu","Xun","Ru","Su","Wu","Lai","Wei","Zhuo","Juan", 2572 "Cen","Bang","Xi","Mei","Huan","Zhu","Qi","Xi","Song","Du","Zhuo","Pei","Mian","Gan","Fei","Cong", 2573 "Shen","Guan","Lu","Shuan","Xie","Yan","Mian","Qiu","Sou","Huang","Xu","Pen","Jian","Xuan","Wo","Mei", 2574 "Yan","Qin","Ke","She","Mang","Ying","Pu","Li","Ru","Ta","Hun","Bi","Xiu","Fu","Tang","Pang", 2575 "Ming","Huang","Ying","Xiao","Lan","Cao","Hu","Luo","Huan","Lian","Zhu","Yi","Lu","Xuan","Gan","Shu", 2576 "Si","Shan","Shao","Tong","Chan","Lai","Sui","Li","Dan","Chan","Lian","Ru","Pu","Bi","Hao","Zhuo", 2577 "Han","Xie","Ying","Yue","Fen","Hao","Ba","Bao","Gui","Dang","Mi","You","Chen","Ning","Jian","Qian", 2578 "Wu","Liao","Qian","Huan","Jian","Jian","Zou","Ya","Wu","Jiong","Ze","Yi","Er","Jia","Jing","Dai", 2579 "Hou","Pang","Bu","Li","Qiu","Xiao","Ti","Qun","Kui","Wei","Huan","Lu","Chuan","Huang","Qiu","Xia", 2580 "Ao","Gou","Ta","Liu","Xian","Lin","Ju","Xie","Miao","Sui","La","Ji","Hui","Tuan","Zhi","Kao", 2581 "Zhi","Ji","E","Chan","Xi","Ju","Chan","Jing","Nu","Mi","Fu","Bi","Yu","Che","Shuo","Fei", 2582 "Yan","Wu","Yu","Bi","Jin","Zi","Gui","Niu","Yu","Si","Da","Zhou","Shan","Qie","Ya","Rao", 2583 "Shu","Luan","Jiao","Pin","Cha","Li","Ping","Wa","Xian","Suo","Di","Wei","E","Jing","Biao","Jie", 2584 "Chang","Bi","Chan","Nu","Ao","Yuan","Ting","Wu","Gou","Mo","Pi","Ai","Pin","Chi","Li","Yan", 2585 "Qiang","Piao","Chang","Lei","Zhang","Xi","Shan","Bi","Niao","Mo","Shuang","Ga","Ga","Fu","Nu","Zi", 2586 "Jie","Jue","Bao","Zang","Si","Fu","Zou","Yi","Nu","Dai","Xiao","Hua","Pian","Li","Qi","Ke", 2587 "Zhui","Can","Zhi","Wu","Ao","Liu","Shan","Biao","Cong","Chan","Ji","Xiang","Jiao","Yu","Zhou","Ge", 2588 "Wan","Kuang","Yun","Pi","Shu","Gan","Xie","Fu","Zhou","Fu","Chu","Dai","Ku","Hang","Jiang","Geng", 2589 "Xiao","Ti","Ling","Qi","Fei","Shang","Gun","Duo","Shou","Liu","Quan","Wan","Zi","Ke","Xiang","Ti", 2590 "Miao","Hui","Si","Bian","Gou","Zhui","Min","Jin","Zhen","Ru","Gao","Li","Yi","Jian","Bin","Piao", 2591 "Man","Lei","Miao","Sao","Xie","Liao","Zeng","Jiang","Qian","Qiao","Huan","Zuan","Yao","Ji","Chuan","Zai", 2592 "Yong","Ding","Ji","Wei","Bin","Min","Jue","Ke","Long","Dian","Dai","Po","Min","Jia","Er","Gong", 2593 "Xu","Ya","Heng","Yao","Luo","Xi","Hui","Lian","Qi","Ying","Qi","Hu","Kun","Yan","Cong","Wan", 2594 "Chen","Ju","Mao","Yu","Yuan","Xia","Nao","Ai","Tang","Jin","Huang","Ying","Cui","Cong","Xuan","Zhang", 2595 "Pu","Can","Qu","Lu","Bi","Zan","Wen","Wei","Yun","Tao","Wu","Shao","Qi","Cha","Ma","Li", 2596 "Pi","Miao","Yao","Rui","Jian","Chu","Cheng","Cong","Xiao","Fang","Pa","Zhu","Nai","Zhi","Zhe","Long", 2597 "Jiu","Ping","Lu","Xia","Xiao","You","Zhi","Tuo","Zhi","Ling","Gou","Di","Li","Tuo","Cheng","Kao", 2598 "Lao","Ya","Rao","Zhi","Zhen","Guang","Qi","Ting","Gua","Jiu","Hua","Heng","Gui","Jie","Luan","Juan", 2599 "An","Xu","Fan","Gu","Fu","Jue","Zi","Suo","Ling","Chu","Fen","Du","Qian","Zhao","Luo","Chui", 2600 "Liang","Guo","Jian","Di","Ju","Cou","Zhen","Nan","Zha","Lian","Lan","Ji","Pin","Ju","Qiu","Duan", 2601 "Chui","Chen","Lv","Cha","Ju","Xuan","Mei","Ying","Zhen","Fei","Ta","Sun","Xie","Gao","Cui","Gao", 2602 "Shuo","Bin","Rong","Zhu","Xie","Jin","Qiang","Qi","Chu","Tang","Zhu","Hu","Gan","Yue","Qing","Tuo", 2603 "Jue","Qiao","Qin","Lu","Zun","Xi","Ju","Yuan","Lei","Yan","Lin","Bo","Cha","You","Ao","Mo", 2604 "Cu","Shang","Tian","Yun","Lian","Piao","Dan","Ji","Bin","Yi","Ren","E","Gu","Ke","Lu","Zhi", 2605 "Yi","Zhen","Hu","Li","Yao","Shi","Zhi","Quan","Lu","Zhe","Nian","Wang","Chuo","Zi","Cou","Lu", 2606 "Lin","Wei","Jian","Qiang","Jia","Ji","Ji","Kan","Deng","Gai","Jian","Zang","Ou","Ling","Bu","Beng", 2607 "Zeng","Pi","Po","Ga","La","Gan","Hao","Tan","Gao","Ze","Xin","Yun","Gui","He","Zan","Mao", 2608 "Yu","Chang","Ni","Qi","Sheng","Ye","Chao","Yan","Hui","Bu","Han","Gui","Xuan","Kui","Ai","Ming", 2609 "Tun","Xun","Yao","Xi","Nang","Ben","Shi","Kuang","Yi","Zhi","Zi","Gai","Jin","Zhen","Lai","Qiu", 2610 "Ji","Dan","Fu","Chan","Ji","Xi","Di","Yu","Gou","Jin","Qu","Jian","Jiang","Pin","Mao","Gu", 2611 "Wu","Gu","Ji","Ju","Jian","Pian","Kao","Qie","Suo","Bai","Ge","Bo","Mao","Mu","Cui","Jian", 2612 "San","Shu","Chang","Lu","Pu","Qu","Pie","Dao","Xian","Chuan","Dong","Ya","Yin","Ke","Yun","Fan", 2613 "Chi","Jiao","Du","Die","You","Yuan","Guo","Yue","Wo","Rong","Huang","Jing","Ruan","Tai","Gong","Zhun", 2614 "Na","Yao","Qian","Long","Dong","Ka","Lu","Jia","Shen","Zhou","Zuo","Gua","Zhen","Qu","Zhi","Jing", 2615 "Guang","Dong","Yan","Kuai","Sa","Hai","Pian","Zhen","Mi","Tun","Luo","Cuo","Pao","Wan","Niao","Jing", 2616 "Yan","Fei","Yu","Zong","Ding","Jian","Cou","Nan","Mian","Wa","E","Shu","Cheng","Ying","Ge","Lv", 2617 "Bin","Teng","Zhi","Chuai","Gu","Meng","Sao","Shan","Lian","Lin","Yu","Xi","Qi","Sha","Xin","Xi", 2618 "Biao","Sa","Ju","Sou","Biao","Biao","Shu","Gou","Gu","Hu","Fei","Ji","Lan","Yu","Pei","Mao", 2619 "Zhan","Jing","Ni","Liu","Yi","Yang","Wei","Dun","Qiang","Shi","Hu","Zhu","Xuan","Tai","Ye","Yang", 2620 "Wu","Han","Men","Chao","Yan","Hu","Yu","Wei","Duan","Bao","Xuan","Bian","Tui","Liu","Man","Shang", 2621 "Yun","Yi","Yu","Fan","Sui","Xian","Jue","Cuan","Huo","Tao","Xu","Xi","Li","Hu","Jiong","Hu", 2622 "Fei","Shi","Si","Xian","Zhi","Qu","Hu","Fu","Zuo","Mi","Zhi","Ci","Zhen","Tiao","Qi","Chan", 2623 "Xi","Zhuo","Xi","Rang","Te","Tan","Dui","Jia","Hui","Nv","Nin","Yang","Zi","Que","Qian","Min", 2624 "Te","Qi","Dui","Mao","Men","Gang","Yu","Yu","Ta","Xue","Miao","Ji","Gan","Dang","Hua","Che", 2625 "Dun","Ya","Zhuo","Bian","Feng","Fa","Ai","Li","Long","Zha","Tong","Di","La","Tuo","Fu","Xing", 2626 "Mang","Xia","Qiao","Zhai","Dong","Nao","Ge","Wo","Qi","Dui","Bei","Ding","Chen","Zhou","Jie","Di", 2627 "Xuan","Bian","Zhe","Gun","Sang","Qing","Qu","Dun","Deng","Jiang","Ca","Meng","Bo","Kan","Zhi","Fu", 2628 "Fu","Xu","Mian","Kou","Dun","Miao","Dan","Sheng","Yuan","Yi","Sui","Zi","Chi","Mou","Lai","Jian", 2629 "Di","Suo","Ya","Ni","Sui","Pi","Rui","Sou","Kui","Mao","Ke","Ming","Piao","Cheng","Kan","Lin", 2630 "Gu","Ding","Bi","Quan","Tian","Fan","Zhen","She","Wan","Tuan","Fu","Gang","Gu","Li","Yan","Pi", 2631 "Lan","Li","Ji","Zeng","He","Guan","Juan","Jin","Ga","Yi","Po","Zhao","Liao","Tu","Chuan","Shan", 2632 "Men","Chai","Nv","Bu","Tai","Ju","Ban","Qian","Fang","Kang","Dou","Huo","Ba","Yu","Zheng","Gu", 2633 "Ke","Po","Bu","Bo","Yue","Mu","Tan","Dian","Shuo","Shi","Xuan","Ta","Bi","Ni","Pi","Duo", 2634 "Kao","Lao","Er","You","Cheng","Jia","Nao","Ye","Cheng","Diao","Yin","Kai","Zhu","Ding","Diu","Hua", 2635 "Quan","Ha","Sha","Diao","Zheng","Se","Chong","Tang","An","Ru","Lao","Lai","Te","Keng","Zeng","Li", 2636 "Gao","E","Cuo","Lve","Liu","Kai","Jian","Lang","Qin","Ju","A","Qiang","Nuo","Ben","De","Ke", 2637 "Kun","Gu","Huo","Pei","Juan","Tan","Zi","Qie","Kai","Si","E","Cha","Sou","Huan","Ai","Lou", 2638 "Qiang","Fei","Mei","Mo","Ge","Juan","Na","Liu","Yi","Jia","Bin","Biao","Tang","Man","Luo","Yong", 2639 "Chuo","Xuan","Di","Tan","Jue","Pu","Lu","Dui","Lan","Pu","Cuan","Qiang","Deng","Huo","Zhuo","Yi", 2640 "Cha","Biao","Zhong","Shen","Cuo","Zhi","Bi","Zi","Mo","Shu","Lv","Ji","Fu","Lang","Ke","Ren", 2641 "Zhen","Ji","Se","Nian","Fu","Rang","Gui","Jiao","Hao","Xi","Po","Die","Hu","Yong","Jiu","Yuan", 2642 "Bao","Zhen","Gu","Dong","Lu","Qu","Chi","Si","Er","Zhi","Gua","Xiu","Luan","Bo","Li","Hu", 2643 "Yu","Xian","Ti","Wu","Miao","An","Bei","Chun","Hu","E","Ci","Mei","Wu","Yao","Jian","Ying", 2644 "Zhe","Liu","Liao","Jiao","Jiu","Yu","Hu","Lu","Guan","Bing","Ding","Jie","Li","Shan","Li","You", 2645 "Gan","Ke","Da","Zha","Pao","Zhu","Xuan","Jia","Ya","Yi","Zhi","Lao","Wu","Cuo","Xian","Sha", 2646 "Zhu","Fei","Gu","Wei","Yu","Yu","Dan","La","Yi","Hou","Chai","Lou","Jia","Sao","Chi","Mo", 2647 "Ban","Ji","Huang","Biao","Luo","Ying","Zhai","Long","Yin","Chou","Ban","Lai","Yi","Dian","Pi","Dian", 2648 "Qu","Yi","Song","Xi","Qiong","Zhun","Bian","Yao","Tiao","Dou","Ke","Yu","Xun","Ju","Yu","Yi", 2649 "Cha","Na","Ren","Jin","Mei","Pan","Dang","Jia","Ge","Ken","Lian","Cheng","Lian","Jian","Biao","Chu", 2650 "Ti","Bi","Ju","Duo","Da","Bei","Bao","Lv","Bian","Lan","Chi","Zhe","Qiang","Ru","Pan","Ya", 2651 "Xu","Jun","Cun","Jin","Lei","Zi","Chao","Si","Huo","Lao","Tang","Ou","Lou","Jiang","Nou","Mo", 2652 "Die","Ding","Dan","Ling","Ning","Guo","Kui","Ao","Qin","Han","Qi","Hang","Jie","He","Ying","Ke", 2653 "Han","E","Zhuan","Nie","Man","Sang","Hao","Ru","Pin","Hu","Qian","Qiu","Ji","Chai","Hui","Ge", 2654 "Meng","Fu","Pi","Rui","Xian","Hao","Jie","Gong","Dou","Yin","Chi","Han","Gu","Ke","Li","You", 2655 "Ran","Zha","Qiu","Ling","Cheng","You","Qiong","Jia","Nao","Zhi","Si","Qu","Ting","Kuo","Qi","Jiao", 2656 "Yang","Mou","Shen","Zhe","Shao","Wu","Li","Chu","Fu","Qiang","Qing","Qi","Xi","Yu","Fei","Guo", 2657 "Guo","Yi","Pi","Tiao","Quan","Wan","Lang","Meng","Chun","Rong","Nan","Fu","Kui","Ke","Fu","Sou", 2658 "Yu","You","Lou","You","Bian","Mou","Qin","Ao","Man","Mang","Ma","Yuan","Xi","Chi","Tang","Pang", 2659 "Shi","Huang","Cao","Piao","Tang","Xi","Xiang","Zhong","Zhang","Shuai","Mao","Peng","Hui","Pan","Shan","Huo", 2660 "Meng","Chan","Lian","Mie","Li","Du","Qu","Fou","Ying","Qing","Xia","Shi","Zhu","Yu","Ji","Du", 2661 "Ji","Jian","Zhao","Zi","Hu","Qiong","Po","Da","Sheng","Ze","Gou","Li","Si","Tiao","Jia","Bian", 2662 "Chi","Kou","Bi","Xian","Yan","Quan","Zheng","Jun","Shi","Gang","Pa","Shao","Xiao","Qing","Ze","Qie", 2663 "Zhu","Ruo","Qian","Tuo","Bi","Dan","Kong","Wan","Xiao","Zhen","Kui","Huang","Hou","Gou","Fei","Li", 2664 "Bi","Chi","Su","Mie","Dou","Lu","Duan","Gui","Dian","Zan","Deng","Bo","Lai","Zhou","Yu","Yu", 2665 "Chong","Xi","Nie","Nv","Chuan","Shan","Yi","Bi","Zhong","Ban","Fang","Ge","Lu","Zhu","Ze","Xi", 2666 "Shao","Wei","Meng","Shou","Cao","Chong","Meng","Qin","Niao","Jia","Qiu","Sha","Bi","Di","Qiang","Suo", 2667 "Jie","Tang","Xi","Xian","Mi","Ba","Li","Tiao","Xi","Zi","Can","Lin","Zong","San","Hou","Zan", 2668 "Ci","Xu","Rou","Qiu","Jiang","Gen","Ji","Yi","Ling","Xi","Zhu","Fei","Jian","Pian","He","Yi", 2669 "Jiao","Zhi","Qi","Qi","Yao","Dao","Fu","Qu","Jiu","Ju","Lie","Zi","Zan","Nan","Zhe","Jiang", 2670 "Chi","Ding","Gan","Zhou","Yi","Gu","Zuo","Tuo","Xian","Ming","Zhi","Yan","Shai","Cheng","Tu","Lei", 2671 "Kun","Pei","Hu","Ti","Xu","Hai","Tang","Lao","Bu","Jiao","Xi","Ju","Li","Xun","Shi","Cuo", 2672 "Dun","Qiong","Xue","Cu","Bie","Bo","Ta","Jian","Fu","Qiang","Zhi","Fu","Shan","Li","Tuo","Jia", 2673 "Bo","Tai","Kui","Qiao","Bi","Xian","Xian","Ji","Jiao","Liang","Ji","Chuo","Huai","Chi","Zhi","Dian", 2674 "Bo","Zhi","Jian","Die","Chuai","Zhong","Ju","Duo","Cuo","Pian","Rou","Nie","Pan","Qi","Chu","Jue", 2675 "Pu","Fan","Cu","Zhu","Lin","Chan","Lie","Zuan","Xie","Zhi","Diao","Mo","Xiu","Mo","Pi","Hu", 2676 "Jue","Shang","Gu","Zi","Gong","Su","Zhi","Zi","Qing","Liang","Yu","Li","Wen","Ting","Ji","Pei", 2677 "Fei","Sha","Yin","Ai","Xian","Mai","Chen","Ju","Bao","Tiao","Zi","Yin","Yu","Chuo","Wo","Mian", 2678 "Yuan","Tuo","Zhui","Sun","Jun","Ju","Luo","Qu","Chou","Qiong","Luan","Wu","Zan","Mou","Ao","Liu", 2679 "Bei","Xin","You","Fang","Ba","Ping","Nian","Lu","Su","Fu","Hou","Tai","Gui","Jie","Wei","Er", 2680 "Ji","Jiao","Xiang","Xun","Geng","Li","Lian","Jian","Shi","Tiao","Gun","Sha","Huan","Ji","Qing","Ling", 2681 "Zou","Fei","Kun","Chang","Gu","Ni","Nian","Diao","Shi","Zi","Fen","Die","E","Qiu","Fu","Huang", 2682 "Bian","Sao","Ao","Qi","Ta","Guan","Yao","Le","Biao","Xue","Man","Min","Yong","Gui","Shan","Zun", 2683 "Li","Da","Yang","Da","Qiao","Man","Jian","Ju","Rou","Gou","Bei","Jie","Tou","Ku","Gu","Di", 2684 "Hou","Ge","Ke","Bi","Lou","Qia","Kuan","Bin","Du","Mei","Ba","Yan","Liang","Xiao","Wang","Chi", 2685 "Xiang","Yan","Tie","Tao","Yong","Biao","Kun","Mao","Ran","Tiao","Ji","Zi","Xiu","Quan","Jiu","Bin", 2686 "Huan","Lie","Me","Hui","Mi","Ji","Jun","Zhu","Mi","Qi","Ao","She","Lin","Dai","Chu","You", 2687 "Xia","Yi","Qu","Du","Li","Qing","Can","An","Fen","You","Wu","Yan","Xi","Qiu","Han","Zha" 2688 }; 2689 #endregion 二級漢字 2690 #region 變量定義 2691 // GB2312-80 標准規范中第一個漢字的機內碼.即"啊"的機內碼 2692 private const int firstChCode = -20319; 2693 // GB2312-80 標准規范中最后一個漢字的機內碼.即"齇"的機內碼 2694 private const int lastChCode = -2050; 2695 // GB2312-80 標准規范中最后一個一級漢字的機內碼.即"座"的機內碼 2696 private const int lastOfOneLevelChCode = -10247; 2697 // 配置中文字符 2698 //static Regex regex = new Regex("[\u4e00-\u9fa5]$"); 2699 2700 #endregion 2701 #endregion 2702 2703 /// <summary> 2704 /// 取拼音第一個字段 2705 /// </summary> 2706 /// <param name="ch"></param> 2707 /// <returns></returns> 2708 public static String GetFirst(Char ch) 2709 { 2710 var rs = Get(ch); 2711 if (!String.IsNullOrEmpty(rs)) rs = rs.Substring(0, 1); 2712 2713 return rs; 2714 } 2715 2716 /// <summary> 2717 /// 取拼音第一個字段 2718 /// </summary> 2719 /// <param name="str"></param> 2720 /// <returns></returns> 2721 public static String GetFirst(String str) 2722 { 2723 if (String.IsNullOrEmpty(str)) return String.Empty; 2724 2725 var sb = new StringBuilder(str.Length + 1); 2726 var chs = str.ToCharArray(); 2727 2728 for (var i = 0; i < chs.Length; i++) 2729 { 2730 sb.Append(GetFirst(chs[i])); 2731 } 2732 2733 return sb.ToString(); 2734 } 2735 2736 /// <summary> 2737 /// 獲取單字拼音 2738 /// </summary> 2739 /// <param name="ch"></param> 2740 /// <returns></returns> 2741 public static String Get(Char ch) 2742 { 2743 // 拉丁字符 2744 if (ch <= '\x00FF') return ch.ToString(); 2745 2746 // 標點符號、分隔符 2747 if (Char.IsPunctuation(ch) || Char.IsSeparator(ch)) return ch.ToString(); 2748 2749 // 非中文字符 2750 if (ch < '\x4E00' || ch > '\x9FA5') return ch.ToString(); 2751 2752 var arr = Encoding.GetEncoding("gb2312").GetBytes(ch.ToString()); 2753 //Encoding.Default默認在中文環境里雖是GB2312,但在多變的環境可能是其它 2754 //var arr = Encoding.Default.GetBytes(ch.ToString()); 2755 var chr = (Int16)arr[0] * 256 + (Int16)arr[1] - 65536; 2756 2757 //***// 單字符--英文或半角字符 2758 if (chr > 0 && chr < 160) return ch.ToString(); 2759 #region 中文字符處理 2760 2761 // 判斷是否超過GB2312-80標准中的漢字范圍 2762 if (chr > lastChCode || chr < firstChCode) 2763 { 2764 return ch.ToString();; 2765 } 2766 // 如果是在一級漢字中 2767 else if (chr <= lastOfOneLevelChCode) 2768 { 2769 // 將一級漢字分為12塊,每塊33個漢字. 2770 for (int aPos = 11; aPos >= 0; aPos--) 2771 { 2772 int aboutPos = aPos * 33; 2773 // 從最后的塊開始掃描,如果機內碼大於塊的第一個機內碼,說明在此塊中 2774 if (chr >= pyValue[aboutPos]) 2775 { 2776 // Console.WriteLine("存在於第 " + aPos.ToString() + " 塊,此塊的第一個機內碼是: " + pyValue[aPos * 33].ToString()); 2777 // 遍歷塊中的每個音節機內碼,從最后的音節機內碼開始掃描, 2778 // 如果音節內碼小於機內碼,則取此音節 2779 for (int i = aboutPos + 32; i >= aboutPos; i--) 2780 { 2781 if (pyValue[i] <= chr) 2782 { 2783 // Console.WriteLine("找到第一個小於要查找機內碼的機內碼: " + pyValue[i].ToString()); 2784 return pyName[i]; 2785 } 2786 } 2787 break; 2788 } 2789 } 2790 } 2791 // 如果是在二級漢字中 2792 else 2793 { 2794 int pos = Array.IndexOf(otherChinese, ch.ToString()); 2795 if (pos != decimal.MinusOne) 2796 { 2797 return otherPinYin[pos]; 2798 } 2799 } 2800 #endregion 中文字符處理 2801 2802 //if (chr < -20319 || chr > -10247) { // 不知道的字符 2803 // return null; 2804 2805 //for (var i = pyValue.Length - 1; i >= 0; i--) 2806 //{ 2807 // if (pyValue[i] <= chr) return pyName[i];//這只能對應數組已經定義的 2808 //} 2809 2810 return String.Empty; 2811 } 2812 2813 /// <summary> 2814 /// 把漢字轉換成拼音(全拼) 2815 /// </summary> 2816 /// <param name="str">漢字字符串</param> 2817 /// <returns>轉換后的拼音(全拼)字符串</returns> 2818 public static String GetPinYin(String str) 2819 { 2820 if (String.IsNullOrEmpty(str)) return String.Empty; 2821 2822 var sb = new StringBuilder(str.Length * 10); 2823 var chs = str.ToCharArray(); 2824 2825 for (var j = 0; j < chs.Length; j++) 2826 { 2827 sb.Append(Get(chs[j])); 2828 } 2829 2830 return sb.ToString(); 2831 } 2832 #endregion 2833 2834 #region 獲取網頁的HTML內容 2835 // 獲取網頁的HTML內容,指定Encoding 2836 public static string GetHtml(string url, Encoding encoding) 2837 { 2838 byte[] buf = new WebClient().DownloadData(url); 2839 if (encoding != null) return encoding.GetString(buf); 2840 string html = Encoding.UTF8.GetString(buf); 2841 encoding = GetEncoding(html); 2842 if (encoding == null || encoding == Encoding.UTF8) return html; 2843 return encoding.GetString(buf); 2844 } 2845 // 根據網頁的HTML內容提取網頁的Encoding 2846 public static Encoding GetEncoding(string html) 2847 { 2848 string pattern = @"(?i)\bcharset=(?<charset>[-a-zA-Z_0-9]+)"; 2849 string charset = Regex.Match(html, pattern).Groups["charset"].Value; 2850 try { return Encoding.GetEncoding(charset); } 2851 catch (ArgumentException) { return null; } 2852 } 2853 #endregion 2854 } 2855 }
重要修正:在代碼973行,這樣寫是不起用作的
修正一下:
1 Htmlstring = Htmlstring.Replace("<", "");
2 Htmlstring = Htmlstring.Replace(">", "");
3 Htmlstring = Htmlstring.Replace("\r\n", "");
感謝 @彼年豆蔻 細心發現的問題。
原創文章 轉載請尊重勞動成果 http://yuangang.cnblogs.com