一個非常好的C#字元串操作處理類StringHelper.cs

来源:http://www.cnblogs.com/sanler/archive/2017/07/28/7249123.html
-Advertisement-
Play Games

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         /// 	   

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 首先,我們需要做的是什麼? 我們成功登錄之後,跳轉到主界面,然後主界面的登錄按鈕變成頭像啥的。下一次打開網頁就要判斷有沒有登錄過,有cookie就不需要登錄,直接顯示頭像 1.成功登錄後,客戶端請求伺服器 2.把登陸信息傳入到伺服器 3.伺服器有了這個cookie,保存到cookie集合裡面,然後反 ...
  • 出現這個原因我們應該都能猜測到,文件傳出過大,超出了WCF預設範圍,那麼我們需要進行修改。 服務端和客戶端都需要修改。 第一、客戶端: 上面是wcf客戶端預設生成的,如需要修改傳輸文件大小,需要一下改動 <binding name="BasicHttpBinding_ITaskService" ma ...
  • IIS 中的 Owin 在 IIS 裡面部署 Owin,既能得到 Owin 管道模型的靈活性和模塊特性,也能很好地利用 IIS 成熟的配置,Owin 程式將會跑在 ASP.NET request 的管道中。 首先建一個空的 Web 項目 添加 Nuget 包 Microsoft.Owin.Host. ...
  • 一、序言 大家或多或少都聽過WebService(Web服務),有一段時間很多電腦期刊、書籍和網站都大肆的提及和宣傳WebService技術,其中不乏很多吹噓和做廣告的成分。但是不得不承認的是WebService真的是一門新興和有前途的技術,那麼WebService到底是什麼?何時應該用? 當前的 ...
  • 出於學習和測試的簡單需要,使用 Console 來作為 EF CORE 的承載程式是最合適不過的。今天筆者就將平時的幾種使用方式總結成文,以供參考,同時也是給本人一個溫故知新的機會。因為沒有一個完整的脈絡,所以也只是想起什麼寫點什麼,不通順的地方還請多多諒解。 本文對象資料庫預設為 VS 自帶的 L ...
  • (1)新建一個MFC對話框項目 (2)對話框中添加WebBrower控制項,添加方法:點擊菜單欄工具->選擇工具箱項->在彈出的選擇工具箱項對話框選擇COM組件->Microsoft Web Browser->確定,添加到對話框中即可。 (3)添加類CWebBrowser2的頭文件和實現 右鍵點擊項目 ...
  • 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using System.Text.RegularExpressions; 5 6 namespace DotNet.Utilities 7 { 8 ... ...
  • 1、NuGet搜索Npoi並安裝 2、添加引用將包引用進來 3、Controller里引用 4、使用 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...