1 /// 2 /// 類說明:Assistant 3 /// 編 碼 人:蘇飛 4 /// 聯繫方式:361983679 5 /// 更新網站:http://www.sufeinet.com/thread-655-1-1.html 6 /// 7 using System; 8 using Sys... ...
1 /// <summary> 2 /// 類說明:Assistant 3 /// 編 碼 人:蘇飛 4 /// 聯繫方式:361983679 5 /// 更新網站:http://www.sufeinet.com/thread-655-1-1.html 6 /// </summary> 7 using System; 8 using System.Collections.Generic; 9 using System.Text; 10 using System.Text.RegularExpressions; 11 12 namespace DotNet.Utilities 13 { 14 /// <summary> 15 /// 字元串操作類 16 /// 1、GetStrArray(string str, char speater, bool toLower) 把字元串按照分隔符轉換成 List 17 /// 2、GetStrArray(string str) 把字元串轉 按照, 分割 換為數據 18 /// 3、GetArrayStr(List list, string speater) 把 List 按照分隔符組裝成 string 19 /// 4、GetArrayStr(List list) 得到數組列表以逗號分隔的字元串 20 /// 5、GetArrayValueStr(Dictionary<int, int> list)得到數組列表以逗號分隔的字元串 21 /// 6、DelLastComma(string str)刪除最後結尾的一個逗號 22 /// 7、DelLastChar(string str, string strchar)刪除最後結尾的指定字元後的字元 23 /// 8、ToSBC(string input)轉全形的函數(SBC case) 24 /// 9、ToDBC(string input)轉半形的函數(SBC case) 25 /// 10、GetSubStringList(string o_str, char sepeater)把字元串按照指定分隔符裝成 List 去除重覆 26 /// 11、GetCleanStyle(string StrList, string SplitString)將字元串樣式轉換為純字元串 27 /// 12、GetNewStyle(string StrList, string NewStyle, string SplitString, out string Error)將字元串轉換為新樣式 28 /// 13、SplitMulti(string str, string splitstr)分割字元串 29 /// 14、SqlSafeString(string String, bool IsDel) 30 /// </summary> 31 public class StringHelper 32 { 33 /// <summary> 34 /// 把字元串按照分隔符轉換成 List 35 /// </summary> 36 /// <param name="str">源字元串</param> 37 /// <param name="speater">分隔符</param> 38 /// <param name="toLower">是否轉換為小寫</param> 39 /// <returns></returns> 40 public static List<string> GetStrArray(string str, char speater, bool toLower) 41 { 42 List<string> list = new List<string>(); 43 string[] ss = str.Split(speater); 44 foreach (string s in ss) 45 { 46 if (!string.IsNullOrEmpty(s) && s != speater.ToString()) 47 { 48 string strVal = s; 49 if (toLower) 50 { 51 strVal = s.ToLower(); 52 } 53 list.Add(strVal); 54 } 55 } 56 return list; 57 } 58 /// <summary> 59 /// 把字元串轉 按照, 分割 換為數據 60 /// </summary> 61 /// <param name="str"></param> 62 /// <returns></returns> 63 public static string[] GetStrArray(string str) 64 { 65 return str.Split(new Char[] { ',' }); 66 } 67 /// <summary> 68 /// 把 List<string> 按照分隔符組裝成 string 69 /// </summary> 70 /// <param name="list"></param> 71 /// <param name="speater"></param> 72 /// <returns></returns> 73 public static string GetArrayStr(List<string> list, string speater) 74 { 75 StringBuilder sb = new StringBuilder(); 76 for (int i = 0; i < list.Count; i++) 77 { 78 if (i == list.Count - 1) 79 { 80 sb.Append(list[i]); 81 } 82 else 83 { 84 sb.Append(list[i]); 85 sb.Append(speater); 86 } 87 } 88 return sb.ToString(); 89 } 90 /// <summary> 91 /// 得到數組列表以逗號分隔的字元串 92 /// </summary> 93 /// <param name="list"></param> 94 /// <returns></returns> 95 public static string GetArrayStr(List<int> list) 96 { 97 StringBuilder sb = new StringBuilder(); 98 for (int i = 0; i < list.Count; i++) 99 { 100 if (i == list.Count - 1) 101 { 102 sb.Append(list[i].ToString()); 103 } 104 else 105 { 106 sb.Append(list[i]); 107 sb.Append(","); 108 } 109 } 110 return sb.ToString(); 111 } 112 /// <summary> 113 /// 得到數組列表以逗號分隔的字元串 114 /// </summary> 115 /// <param name="list"></param> 116 /// <returns></returns> 117 public static string GetArrayValueStr(Dictionary<int, int> list) 118 { 119 StringBuilder sb = new StringBuilder(); 120 foreach (KeyValuePair<int, int> kvp in list) 121 { 122 sb.Append(kvp.Value + ","); 123 } 124 if (list.Count > 0) 125 { 126 return DelLastComma(sb.ToString()); 127 } 128 else 129 { 130 return ""; 131 } 132 } 133 134 #region 刪除最後一個字元之後的字元 135 136 /// <summary> 137 /// 刪除最後結尾的一個逗號 138 /// </summary> 139 public static string DelLastComma(string str) 140 { 141 return str.Substring(0, str.LastIndexOf(",")); 142 } 143 144 /// <summary> 145 /// 刪除最後結尾的指定字元後的字元 146 /// </summary> 147 public static string DelLastChar(string str, string strchar) 148 { 149 return str.Substring(0, str.LastIndexOf(strchar)); 150 } 151 152 #endregion 153 154 /// <summary> 155 /// 轉全形的函數(SBC case) 156 /// </summary> 157 /// <param name="input"></param> 158 /// <returns></returns> 159 public static string ToSBC(string input) 160 { 161 //半形轉全形: 162 char[] c = input.ToCharArray(); 163 for (int i = 0; i < c.Length; i++) 164 { 165 if (c[i] == 32) 166 { 167 c[i] = (char)12288; 168 continue; 169 } 170 if (c[i] < 127) 171 c[i] = (char)(c[i] + 65248); 172 } 173 return new string(c); 174 } 175 176 /// <summary> 177 /// 轉半形的函數(SBC case) 178 /// </summary> 179 /// <param name="input">輸入</param> 180 /// <returns></returns> 181 public static string ToDBC(string input) 182 { 183 char[] c = input.ToCharArray(); 184 for (int i = 0; i < c.Length; i++) 185 { 186 if (c[i] == 12288) 187 { 188 c[i] = (char)32; 189 continue; 190 } 191 if (c[i] > 65280 && c[i] < 65375) 192 c[i] = (char)(c[i] - 65248); 193 } 194 return new string(c); 195 } 196 197 /// <summary> 198 /// 把字元串按照指定分隔符裝成 List 去除重覆 199 /// </summary> 200 /// <param name="o_str"></param> 201 /// <param name="sepeater"></param> 202 /// <returns></returns> 203 public static List<string> GetSubStringList(string o_str, char sepeater) 204 { 205 List<string> list = new List<string>(); 206 string[] ss = o_str.Split(sepeater); 207 foreach (string s in ss) 208 { 209 if (!string.IsNullOrEmpty(s) && s != sepeater.ToString()) 210 { 211 list.Add(s); 212 } 213 } 214 return list; 215 } 216 217 218 #region 將字元串樣式轉換為純字元串 219 /// <summary> 220 /// 將字元串樣式轉換為純字元串 221 /// </summary> 222 /// <param name="StrList"></param> 223 /// <param name="SplitString"></param> 224 /// <returns></returns> 225 public static string GetCleanStyle(string StrList, string SplitString) 226 { 227 string RetrunValue = ""; 228 //如果為空,返回空值 229 if (StrList == null) 230 { 231 RetrunValue = ""; 232 } 233 else 234 { 235 //返回去掉分隔符 236 string NewString = ""; 237 NewString = StrList.Replace(SplitString, ""); 238 RetrunValue = NewString; 239 } 240 return RetrunValue; 241 } 242 #endregion 243 244 #region 將字元串轉換為新樣式 245 /// <summary> 246 /// 將字元串轉換為新樣式 247 /// </summary> 248 /// <param name="StrList"></param> 249 /// <param name="NewStyle"></param> 250 /// <param name="SplitString"></param> 251 /// <param name="Error"></param> 252 /// <returns></returns> 253 public static string GetNewStyle(string StrList, string NewStyle, string SplitString, out string Error) 254 { 255 string ReturnValue = ""; 256 //如果輸入空值,返回空,並給出錯誤提示 257 if (StrList == null) 258 { 259 ReturnValue = ""; 260 Error = "請輸入需要劃分格式的字元串"; 261 } 262 else 263 { 264 //檢查傳入的字元串長度和樣式是否匹配,如果不匹配,則說明使用錯誤。給出錯誤信息並返回空值 265 int strListLength = StrList.Length; 266 int NewStyleLength = GetCleanStyle(NewStyle, SplitString).Length; 267 if (strListLength != NewStyleLength) 268 { 269 ReturnValue = ""; 270 Error = "樣式格式的長度與輸入的字元長度不符,請重新輸入"; 271 } 272 else 273 { 274 //檢查新樣式中分隔符的位置 275 string Lengstr = ""; 276 for (int i = 0; i < NewStyle.Length; i++) 277 { 278 if (NewStyle.Substring(i, 1) == SplitString) 279 { 280 Lengstr = Lengstr + "," + i; 281 } 282 } 283 if (Lengstr != "") 284 { 285 Lengstr = Lengstr.Substring(1); 286 } 287 //將分隔符放在新樣式中的位置 288 string[] str = Lengstr.Split(','); 289 foreach (string bb in str) 290 { 291 StrList = StrList.Insert(int.Parse(bb), SplitString); 292 } 293 //給出最後的結果 294 ReturnValue = StrList; 295 //因為是正常的輸出,沒有錯誤 296 Error = ""; 297 } 298 } 299 return ReturnValue; 300 } 301 #endregion 302 303 /// <summary> 304 /// 分割字元串 305 /// </summary> 306 /// <param name="str"></param> 307 /// <param name="splitstr"></param> 308 /// <returns></returns> 309 public static string[] SplitMulti(string str, string splitstr) 310 { 311 string[] strArray = null; 312 if ((str != null) && (str != "")) 313 { 314 strArray = new Regex(splitstr).Split(str); 315 } 316 return strArray; 317 } 318 public static string SqlSafeString(string String, bool IsDel) 319 { 320 if (IsDel) 321 { 322 String = String.Replace("'", ""); 323 String = String.Replace("\"", ""); 324 return String; 325 } 326 String = String.Replace("'", "'"); 327 String = String.Replace("\"", """); 328 return String; 329 } 330 331 #region 獲取正確的Id,如果不是正整數,返回0 332 /// <summary> 333 /// 獲取正確的Id,如果不是正整數,返回0 334 /// </summary> 335 /// <param name="_value"></param> 336 /// <returns>返回正確的整數ID,失敗返回0</returns> 337 public static int StrToId(string _value) 338 { 339 if (IsNumberId(_value)) 340 return int.Parse(_value); 341 else 342 return 0; 343 } 344 #endregion 345 #region 檢查一個字元串是否是純數字構成的,一般用於查詢字元串參數的有效性驗證。 346 /// <summary> 347 /// 檢查一個字元串是否是純數字構成的,一般用於查詢字元串參數的有效性驗證。(0除外) 348 /// </summary> 349 /// <param name="_value">需驗證的字元串。。</param> 350 /// <returns>是否合法的bool值。</returns> 351 public static bool IsNumberId(string _value) 352 { 353 return QuickValidate("^[1-9]*[0-9]*$", _value); 354 } 355 #endregion 356 #region 快速驗證一個字元串是否符合指定的正則表達式。 357 /// <summary> 358 /// 快速驗證一個字元串是否符合指定的正則表達式。 359 /// </summary> 360 /// <param name="_express">正則表達式的內容。</param> 361 /// <param name="_value">需驗證的字元串。</param> 362 /// <returns>是否合法的bool值。</returns> 363 public static bool QuickValidate(string _express, string _value) 364 { 365 if (_value == null) return false; 366 Regex myRegex = new Regex(_express); 367 if (_value.Length == 0) 368 { 369 return false; 370 } 371 return myRegex.IsMatch(_value); 372 } 373 #endregion 374 375 376 #region 根據配置對指定字元串進行 MD5 加密 377 /// <summary> 378 /// 根據配置對指定字元串進行 MD5 加密 379 /// </summary> 380 /// <param name="s"></param> 381 /// <returns></returns> 382 public static string GetMD5(string s) 383 { 384 //md5加密 385 s = System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(s, "md5").ToString(); 386 387 return s.ToLower().Substring(8, 16); 388 } 389 #endregion 390 391 #region 得到字元串長度,一個漢字長度為2 392 /// <summary> 393 /// 得到字元串長度,一個漢字長度為2 394 /// </summary> 395 /// <param name="inputString">參數字元串</param> 396 /// <returns></returns> 397 public static int StrLength(string inputString) 398 { 399 System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding(); 400 int tempLen = 0; 401 byte[] s = ascii.GetBytes(inputString); 402 for (int i = 0; i < s.Length; i++) 403 { 404 if ((int)s[i] == 63) 405 tempLen += 2; 406 else 407 tempLen += 1; 408 } 409 return tempLen; 410 } 411 #endregion 412 413 #region 截取指定長度字元串 414 ///