hi_beijing 发表于 2013-2-7 14:59:47

字符串处理Utils

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;
using System.Configuration;
using System.Web;

namespace DtCms.Common
{
    public class Utils
    {
      #region 将字符串转换为数组
      public static string[] GetStrArray(string str)
      {
            return str.Split(new char[',']);
      }
      #endregion

      #region 将数组转换为字符串
      public static string GetArrayStr(List<string> list, string speater)
      {
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < list.Count; i++)
            {
                if (i == list.Count - 1)
                {
                  sb.Append(list);
                }
                else
                {
                  sb.Append(list);
                  sb.Append(speater);
                }
            }
            return sb.ToString();
      }
      #endregion

      #region 删除最后结尾的一个逗号
      /// <summary>
      /// 删除最后结尾的一个逗号
      /// </summary>
      public static string DelLastComma(string str)
      {
            return str.Substring(0, str.LastIndexOf(","));
      }
      #endregion

      #region 删除最后结尾的指定字符后的字符
      /// <summary>
      /// 删除最后结尾的指定字符后的字符
      /// </summary>
      public static string DelLastChar(string str, string strchar)
      {
            return str.Substring(0, str.LastIndexOf(strchar));
      }
      #endregion

      #region 生成指定长度的字符串
      /// <summary>
      /// 生成指定长度的字符串,即生成strLong个str字符串
      /// </summary>
      /// <param name="strLong">生成的长度</param>
      /// <param name="str">以str生成字符串</param>
      /// <returns></returns>
      public static string StringOfChar(int strLong, string str)
      {
            string ReturnStr = "";
            for (int i = 0; i < strLong; i++)
            {
                ReturnStr += str;
            }

            return ReturnStr;
      }
      #endregion

      #region 生成日期随机码
      /// <summary>
      /// 生成日期随机码
      /// </summary>
      /// <returns></returns>
      public static string GetRamCode()
      {
            #region
            return DateTime.Now.ToString("yyyyMMddHHmmssffff");
            #endregion
      }
      #endregion

      #region 截取字符长度
      /// <summary>
      /// 截取字符长度
      /// </summary>
      /// <param name="inputString">字符</param>
      /// <param name="len">长度</param>
      /// <returns></returns>
      public static string CutString(string inputString, int len)
      {
            ASCIIEncoding ascii = new ASCIIEncoding();
            int tempLen = 0;
            string tempString = "";
            byte[] s = ascii.GetBytes(inputString);
            for (int i = 0; i < s.Length; i++)
            {
                if ((int)s == 63)
                {
                  tempLen += 2;
                }
                else
                {
                  tempLen += 1;
                }

                try
                {
                  tempString += inputString.Substring(i, 1);
                }
                catch
                {
                  break;
                }

                if (tempLen > len)
                  break;
            }
            //如果截过则加上半个省略号
            byte[] mybyte = System.Text.Encoding.Default.GetBytes(inputString);
            if (mybyte.Length > len)
                tempString += "…";
            return tempString;
      }
      #endregion

      #region 清除HTML标记
      public static string DropHTML(string Htmlstring)
      {
            //删除脚本
            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, @"&(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;
      }
      #endregion

      #region 清除HTML标记且返回相应的长度
      public static string DropHTML(string Htmlstring, int strLen)
      {
            return CutString(DropHTML(Htmlstring), strLen);
      }
      #endregion

      #region TXT代码转换成HTML格式
      /// <summary>
      /// 字符串字符处理
      /// </summary>
      /// <param name="chr">等待处理的字符串</param>
      /// <returns>处理后的字符串</returns>
      /// //把TXT代码转换成HTML格式
      public static String ToHtml(string Input)
      {
            StringBuilder sb = new StringBuilder(Input);
            sb.Replace("&", "&");
            sb.Replace("<", "<");
            sb.Replace(">", ">");
            sb.Replace("\r\n", "<br />");
            sb.Replace("\n", "<br />");
            sb.Replace("\t", " ");
            //sb.Replace(" ", " ");
            return sb.ToString();
      }
      #endregion

      #region HTML代码转换成TXT格式
      /// <summary>
      /// 字符串字符处理
      /// </summary>
      /// <param name="chr">等待处理的字符串</param>
      /// <returns>处理后的字符串</returns>
      /// //把HTML代码转换成TXT格式
      public static String ToTxt(String Input)
      {
            StringBuilder sb = new StringBuilder(Input);
            sb.Replace(" ", " ");
            sb.Replace("<br>", "\r\n");
            sb.Replace("<br>", "\n");
            sb.Replace("<br />", "\n");
            sb.Replace("<br />", "\r\n");
            sb.Replace("<", "<");
            sb.Replace(">", ">");
            sb.Replace("&", "&");
            return sb.ToString();
      }
      #endregion

      #region 检查危险字符
      /// <summary>
      /// 检查危险字符
      /// </summary>
      /// <param name="Input"></param>
      /// <returns></returns>
      public static string Filter(string sInput)
      {
            if (sInput == null || sInput == "")
                return null;
            string sInput1 = sInput.ToLower();
            string output = sInput;
            string pattern = @"*|and|exec|insert|select|delete|update|count|master|truncate|declare|char(|mid(|chr(|'";
            if (Regex.Match(sInput1, Regex.Escape(pattern), RegexOptions.Compiled | RegexOptions.IgnoreCase).Success)
            {
                throw new Exception("字符串中含有非法字符!");
            }
            else
            {
                output = output.Replace("'", "''");
            }
            return output;
      }
      #endregion

      #region 检查过滤设定的危险字符
      /// <summary>
      /// 检查过滤设定的危险字符
      /// </summary>
      /// <param name="InText">要过滤的字符串 </param>
      /// <returns>如果参数存在不安全字符,则返回true </returns>
      public static bool SqlFilter(string word, string InText)
      {
            if (InText == null)
                return false;
            foreach (string i in word.Split('|'))
            {
                if ((InText.ToLower().IndexOf(i + " ") > -1) || (InText.ToLower().IndexOf(" " + i) > -1))
                {
                  return true;
                }
            }
            return false;
      }
      #endregion

      #region 过滤特殊字符
      /// <summary>
      /// 过滤特殊字符
      /// </summary>
      /// <param name="Input"></param>
      /// <returns></returns>
      public static string Htmls(string Input)
      {
            if (Input != string.Empty && Input != null)
            {
                string ihtml = Input.ToLower();
                ihtml = ihtml.Replace("<script", "<script");
                ihtml = ihtml.Replace("script>", "script>");
                ihtml = ihtml.Replace("<%", "<%");
                ihtml = ihtml.Replace("%>", "%>");
                ihtml = ihtml.Replace("<$", "<$");
                ihtml = ihtml.Replace("$>", "$>");
                return ihtml;
            }
            else
            {
                return string.Empty;
            }
      }
      #endregion

      #region 获得配置文件节点XML文件的绝对路径
      public static string GetXmlMapPath(string xmlName)
      {
            return GetMapPath(ConfigurationManager.AppSettings.ToString());
      }
      #endregion

      #region 获得当前绝对路径
      /// <summary>
      /// 获得当前绝对路径
      /// </summary>
      /// <param name="strPath">指定的路径</param>
      /// <returns>绝对路径</returns>
      public static string GetMapPath(string strPath)
      {
            if (strPath.ToLower().StartsWith("http://"))
            {
                return strPath;
            }
            if (HttpContext.Current != null)
            {
                return HttpContext.Current.Server.MapPath(strPath);
            }
            else //非web程序引用
            {
                strPath = strPath.Replace("/", "\\");
                if (strPath.StartsWith("\\"))
                {
                  strPath = strPath.Substring(strPath.IndexOf('\\', 1)).TrimStart('\\');
                }
                return System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, strPath);
            }
      }
      #endregion

      /// <summary>
      /// 写cookie值
      /// </summary>
      /// <param name="strName">名称</param>
      /// <param name="strValue">值</param>
      public static void WriteCookie(string strName, string strValue)
      {
            HttpCookie cookie = HttpContext.Current.Request.Cookies;
            if (cookie == null)
            {
                cookie = new HttpCookie(strName);
            }
            cookie.Value = strValue;
            HttpContext.Current.Response.AppendCookie(cookie);
      }

      /// <summary>
      /// 写cookie值
      /// </summary>
      /// <param name="strName">名称</param>
      /// <param name="strValue">值</param>
      public static void WriteCookie(string strName, string key, string strValue)
      {
            HttpCookie cookie = HttpContext.Current.Request.Cookies;
            if (cookie == null)
            {
                cookie = new HttpCookie(strName);
            }
            cookie = strValue;
            HttpContext.Current.Response.AppendCookie(cookie);
      }

      /// <summary>
      /// 写cookie值
      /// </summary>
      /// <param name="strName">名称</param>
      /// <param name="strValue">值</param>
      /// <param name="strValue">过期时间(分钟)</param>
      public static void WriteCookie(string strName, string strValue, int expires)
      {
            HttpCookie cookie = HttpContext.Current.Request.Cookies;
            if (cookie == null)
            {
                cookie = new HttpCookie(strName);
            }
            cookie.Value = strValue;
            cookie.Expires = DateTime.Now.AddMinutes(expires);
            HttpContext.Current.Response.AppendCookie(cookie);
      }

      /// <summary>
      /// 读cookie值
      /// </summary>
      /// <param name="strName">名称</param>
      /// <returns>cookie值</returns>
      public static string GetCookie(string strName)
      {
            if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies != null)
                return HttpContext.Current.Request.Cookies.Value.ToString();

            return "";
      }

      /// <summary>
      /// 读cookie值
      /// </summary>
      /// <param name="strName">名称</param>
      /// <returns>cookie值</returns>
      public static string GetCookie(string strName, string key)
      {
            if (HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies != null && HttpContext.Current.Request.Cookies != null)
                return HttpContext.Current.Request.Cookies.ToString();

            return "";
      }
    }
}
页: [1]
查看完整版本: 字符串处理Utils