代码改变世界

有用的String的扩展

2010-11-27 12:50  音乐让我说  阅读(394)  评论(0编辑  收藏  举报
  1. 将字符串数组用一个符号连接起来
        public static class StringExtendsions
        {
            /// <summary>
            /// 将字符串数组用一个符号连接起来
            /// </summary>
            /// <param name="items">数组</param>
            /// <param name="joinFlag">符合,比如中文的逗号“,”</param>
            /// <returns></returns>
            public static string ToJoinString(this string[] items, string joinFlag)
            {
                if (items == null || items.Length == 0)
                {
                    return string.Empty;
                }
                System.Text.StringBuilder result = new System.Text.StringBuilder();
                int i = 1;
                int itemLength = items.Length;
                foreach (string item in items)
                {
                    result.Append(item);
                    if (!string.IsNullOrEmpty(joinFlag) && i < itemLength)
                    {
                        result.Append(joinFlag); 
                    }
                    i++;
                }
                return result.ToString();
            }
        }
    
  2. 移除HTML代码,示例1:
    public static class HtmlRemoval
    {
        /// <summary>
        /// 移除 HTML 标记,
        /// 比如:HtmlRemoval.StripTagsCharArray("你好,我是<span>大侠</span>,很高兴认识大家!")
        /// 将得到 “你好,我是大侠,很高兴认识大家!”
        /// </summary>
        /// <param name="source"></param>
        /// <returns></returns>
        public static string StripTagsCharArray(string source)
        {
            char[] array = new char[source.Length];
            int arrayIndex = 0;
            bool inside = false;
            for (int i = 0; i < source.Length; i++)
            {
                char let = source[i];
                if (let == '<')
                    inside = true;
                else if (let == '>')
                    inside = false;
                else if (!inside)
                {
                    array[arrayIndex] = let;
                    arrayIndex++;
                }
            }
            return new string(array, 0, arrayIndex);
        }
    }

     

  3. 移除HTML代码,示例2:
        public static class StringExtensions
        {
            /// <summary>
            /// 移除HTML代码
            /// </summary>
            /// <param name="Htmlstring">要移除的字符串</param>
            /// <returns></returns>
            public static string RemoveHTML(this string Htmlstring)
            {
                //删除脚本
                Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"<script[^>]*?>.*?</script>", "", RegexOptions.IgnoreCase);
                //删除HTML
                Htmlstring = Regex.Replace(Htmlstring, @"<(.[^>]*)>", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"([\r\n])[\s]+", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"-->", "", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"<!--.*", "", RegexOptions.IgnoreCase);
                //Htmlstring = Regex.Replace(Htmlstring,@"<A>.*</A>","");
                //Htmlstring = Regex.Replace(Htmlstring,@"<[a-zA-Z]*=\.[a-zA-Z]*\?[a-zA-Z]+=\d&\w=%[a-zA-Z]*|[A-Z0-9]","");
                Htmlstring = Regex.Replace(Htmlstring, @"&(quot|#34);", "\"", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(amp|#38);", "&", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(lt|#60);", "<", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(gt|#62);", ">", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(nbsp|#160);", " ", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(iexcl|#161);", "\xa1", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(cent|#162);", "\xa2", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(pound|#163);", "\xa3", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&(copy|#169);", "\xa9", RegexOptions.IgnoreCase);
                Htmlstring = Regex.Replace(Htmlstring, @"&#(\d+);", "", RegexOptions.IgnoreCase);
                Htmlstring.Replace("<", "");
                Htmlstring.Replace(">", "");
                Htmlstring.Replace("\r\n", "");
                //Htmlstring=HttpContext.Current.Server.HtmlEncode(Htmlstring).Trim();
                return Htmlstring;
            }
        }
    
  4. 截取并省略字符串
            /// <summary>
            /// 截取并省略字符串
            /// </summary>
            /// <param name="str"></param>
            /// <param name="length">需要截取的字符长度</param>
            /// <returns></returns>
            public static string SubstringEllipsis(this string str, int length)
            {
                if (str == null)
                {
                    return null;
                }
                string result = GetSubString(str.ToString(), length);
                if (str.ToString().Length > result.Length)
                {
                    result += "...";
                }
                return result;
            }
    
            /// <summary>
            /// 获取指定字符串从 0 开始指定长度的字符。单个字符若是双字节长度算 1 若为单字节长度算 0.5。
            /// </summary>
            /// <param name="input">需要获取的字符串</param>
            /// <param name="count">需要获取的长度</param>
            /// <returns></returns>
            private static string GetSubString(string input, int count)
            {
                int outputCount = 0;
                bool appendCount = false; // 是否递增长度
                string output = "";
    
                foreach (Char c in input.ToCharArray())
                {
                    if (outputCount >= count)
                    {
                        break;
                    }
                    if (Regex.IsMatch(c.ToString(), @"[^\x00-\xff]"))
                    {
                        outputCount++; // 双字节算长度 1 
                    }
                    else
                    {
                        // 单字节算长度 0.5
                        if (!appendCount)
                        {
                            appendCount = true;
                        }
                        else
                        {
                            appendCount = false;
                            outputCount++;
                        }
                    }
                    output += c.ToString();
                }
                return output;
            }
    
  5. 谢谢浏览
  6. ddddd
    public static string CalculateMD5Hash(this string value)
    {
        string hash = value;
        if (value != null)
        {
            value = value.ToLower();
            MD5CryptoServiceProvider md5 = new MD5CryptoServiceProvider();
            byte[] data = Encoding.ASCII.GetBytes(value);
            data = md5.ComputeHash(data);
            hash = "";
            for (int i = 0; i < data.Length; i++)
            {
                hash = hash + data[i].ToString("x2");
            }
        }
        return hash;
    }