zoukankan      html  css  js  c++  java
  • 一个非常好的C#字符串操作处理类StringHelper.cs

      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         /// <summary>  
    415         /// 截取指定长度字符串  
    416         /// </summary>  
    417         /// <param name="inputString">要处理的字符串</param>  
    418         /// <param name="len">指定长度</param>  
    419         /// <returns>返回处理后的字符串</returns>  
    420         public static string ClipString(string inputString, int len)  
    421         {  
    422             bool isShowFix = false;  
    423             if (len % 2 == 1)  
    424             {  
    425                 isShowFix = true;  
    426                 len--;  
    427             }  
    428             System.Text.ASCIIEncoding ascii = new System.Text.ASCIIEncoding();  
    429             int tempLen = 0;  
    430             string tempString = "";  
    431             byte[] s = ascii.GetBytes(inputString);  
    432             for (int i = 0; i < s.Length; i++)  
    433             {  
    434                 if ((int)s[i] == 63)  
    435                     tempLen += 2;  
    436                 else  
    437                     tempLen += 1;  
    438   
    439                 try  
    440                 {  
    441                     tempString += inputString.Substring(i, 1);  
    442                 }  
    443                 catch  
    444                 {  
    445                     break;  
    446                 }  
    447   
    448                 if (tempLen > len)  
    449                     break;  
    450             }  
    451   
    452             byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);  
    453             if (isShowFix && mybyte.Length > len)  
    454                 tempString += "";  
    455             return tempString;  
    456         }  
    457         #endregion  
    458  
    459  
    460  
    461         #region HTML转行成TEXT  
    462         /// <summary>  
    463         /// HTML转行成TEXT  
    464         /// </summary>  
    465         /// <param name="strHtml"></param>  
    466         /// <returns></returns>  
    467         public static string HtmlToTxt(string strHtml)  
    468         {  
    469             string[] aryReg ={  
    470             @"<script[^>]*?>.*?</script>",  
    471             @"<(/s*)?!?((w+:)?w+)(w+(s*=?s*(([""'])(\[""'tbnr]|[^7])*?7|w+)|.{0})|s)*?(/s*)?>",  
    472             @"([
    ])[s]+",  
    473             @"&(quot|#34);",  
    474             @"&(amp|#38);",  
    475             @"&(lt|#60);",  
    476             @"&(gt|#62);",   
    477             @"&(nbsp|#160);",   
    478             @"&(iexcl|#161);",  
    479             @"&(cent|#162);",  
    480             @"&(pound|#163);",  
    481             @"&(copy|#169);",  
    482             @"&#(d+);",  
    483             @"-->",  
    484             @"<!--.*
    "  
    485             };  
    486   
    487             string newReg = aryReg[0];  
    488             string strOutput = strHtml;  
    489             for (int i = 0; i < aryReg.Length; i++)  
    490             {  
    491                 Regex regex = new Regex(aryReg[i], RegexOptions.IgnoreCase);  
    492                 strOutput = regex.Replace(strOutput, string.Empty);  
    493             }  
    494   
    495             strOutput.Replace("<", "");  
    496             strOutput.Replace(">", "");  
    497             strOutput.Replace("
    ", "");  
    498   
    499   
    500             return strOutput;  
    501         }  
    502         #endregion  
    503  
    504         #region 判断对象是否为空  
    505         /// <summary>  
    506         /// 判断对象是否为空,为空返回true  
    507         /// </summary>  
    508         /// <typeparam name="T">要验证的对象的类型</typeparam>  
    509         /// <param name="data">要验证的对象</param>          
    510         public static bool IsNullOrEmpty<T>(T data)  
    511         {  
    512             //如果为null  
    513             if (data == null)  
    514             {  
    515                 return true;  
    516             }  
    517   
    518             //如果为""  
    519             if (data.GetType() == typeof(String))  
    520             {  
    521                 if (string.IsNullOrEmpty(data.ToString().Trim()))  
    522                 {  
    523                     return true;  
    524                 }  
    525             }  
    526   
    527             //如果为DBNull  
    528             if (data.GetType() == typeof(DBNull))  
    529             {  
    530                 return true;  
    531             }  
    532   
    533             //不为空  
    534             return false;  
    535         }  
    536   
    537         /// <summary>  
    538         /// 判断对象是否为空,为空返回true  
    539         /// </summary>  
    540         /// <param name="data">要验证的对象</param>  
    541         public static bool IsNullOrEmpty(object data)  
    542         {  
    543             //如果为null  
    544             if (data == null)  
    545             {  
    546                 return true;  
    547             }  
    548   
    549             //如果为""  
    550             if (data.GetType() == typeof(String))  
    551             {  
    552                 if (string.IsNullOrEmpty(data.ToString().Trim()))  
    553                 {  
    554                     return true;  
    555                 }  
    556             }  
    557   
    558             //如果为DBNull  
    559             if (data.GetType() == typeof(DBNull))  
    560             {  
    561                 return true;  
    562             }  
    563   
    564             //不为空  
    565             return false;  
    566         }  
    567         #endregion  
    568     }  
    569 }  
  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/anlaoliu/p/7249123.html
Copyright © 2011-2022 走看看