首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

13.2  工具类Tools

Tools.cs文件定义了系统的工具类Tools。这是本系统的底层代码,后面将多次用到。为了调用该文件方便,Tools类中多为静态方法,其方法主要包括:关于HTML操作的方法、关于XML操作的方法、关于正则表达式操作的方法和其他操作的方法。各方法的具体功能如图13.4所示。

图13.4  Tools类各方法的功能

这些方法的实现相对比较简单,读者对照注释不难理解。Tools类的实现代码如下:

//Tools类的代码

using System;

using System.Collections;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Text.RegularExpressions;

using System.Xml;

using System.Xml.XPath;

using System.Web;

using System.Xml.Xsl;

using System.IO;

// 工具类

public class Tools

{

      #region HTML操作

      //删除所有的html标记

      public static string delHtml(string str)

      {

           if (str != null && str.Trim() != "")

                  return Regex.Replace(str, "<[^>]+>", "");

           return str;

      }

      // 删除字符串中的特定标记

      //isContent:是否清除内容

      public static string delTag(string str, string tag, bool isContent)

      {

           if (tag == null || tag == "")

           {

                  return str;

           }

           if (isContent)                              //要求清除内容

           {

               return Regex.Replace(str, string.Format("<({0})[^>]*>([\\s\\S]*?)
                    <\\/\\1>", tag), "", RegexOptions.IgnoreCase);

           }

           return Regex.Replace(str, string.Format(@"(<{0}[^>]*(>)?)|(</{0}[^>]
                *>)|", tag), "", RegexOptions.IgnoreCase);

      }

     // 删除字符串中的一组标记

     //isContent:是否清除内容

     public static string delTagArray(string str, string tagA, bool isContent)

     {

           string[] tagAa = tagA.Split(',');

           foreach (string sr1 in tagAa)           //遍历所有标记,删除

           {

                str = delTag(str, sr1, isContent);

           }

           return str;

     } 

     #endregion

     #region XML操作

     //在指定节点创建一个CDATA节点

     public static void CreateCData(XmlDocument xmldoc, XmlNode desc, string

     content)

     {

          XmlCDataSection cds = xmldoc.CreateCDataSection(Replace(content, @"<!\
               [CDATA\[|\]\]>", ""));

          desc.AppendChild(cds);

     }

     // 在指定XML文档中创建一个指定名字和内容的节点

     public static XmlNode CreateNode(XmlDocument xmldoc, XmlNode desc, string name)

     {

          XmlNode xn = xmldoc.CreateElement(name);

          desc.AppendChild(xn);

          return xn;

     }

     //把XML数据文件以指定的xsl文件格式转化为字符串

     public static string XmlToString(XmlDocument xml, string filePath)

     {

          XmlWriterSettings settings = new XmlWriterSettings();        //设置

          settings.OmitXmlDeclaration = true;

          settings.ConformanceLevel = ConformanceLevel.Fragment;

          settings.CloseOutput = false;

          StringBuilder sb = new StringBuilder();

          TextWriter tw = new StringWriter(sb);

          XmlWriter xw = XmlWriter.Create(tw, settings);           //编写器

          XslCompiledTransform xst = new XslCompiledTransform(true);

          xst.Load(HttpContext.Current.Server.MapPath(getApplicationPath() + filePath));

          xst.Transform(xml, xw);                              //转换

          return Replace(sb.ToString(), "xmlns[^>\\s]+", "");  //删除命名空间信息

     }

     #endregion

     #region 正则表达式操作

     //是否包含指定的正则表达式模式

     public static bool RegEx(string exp, string str)

     {

          try

          {

               return Regex.IsMatch(str, exp, RegexOptions.IgnoreCase);

          }

          catch

          {

               return false;

          }

     }

     // 得到一个匹配模式

     public static Match Match(string input, string patt)

     {

          return Regex.Match(input, patt, RegexOptions.IgnoreCase);

     }

     // 集合匹配,得到所有的匹配

     public static MatchCollection MatchCollection(string input, string patt)

     {

          return Regex.Matches(input, patt, RegexOptions.IgnoreCase);

     }

     //不区分大小写的正则表达式替换

     public static string Replace(string input, string patt, string replacetext)

     {

          return Regex.Replace(input, patt, replacetext, RegexOptions.IgnoreCase);

     }

     #endregion

     #region 其他操作

     public static string ToBase64(string s)             // Base64编码

     {

          return Convert.ToBase64String(System.Text.Encoding.Unicode.GetBytes(s));

     }

     public static string Base64To(string s)             // Base64解码

     {

          return System.Text.Encoding.Unicode.GetString(Convert.FromBase64String(s));

     }

     //获取程序的物理路径

     public static string getApplicationPath()

     {

          string path;

          if (HttpContext.Current != null)

          {

                path = HttpContext.Current.Request.ApplicationPath;  //当前程序路径

                if (path.EndsWith("/"))

                {

                      return path;

                }

                else

                {

                       return path + "/";

                }

          }

          else

          {

                path = "";                                   //没有获取路径时返回空值

          }

          return path;

     }

     // 得到Post和Get的所有数据,表示为查询字符串格式

     public static string getpost()

     {

          HttpRequest req = HttpContext.Current.Request;

          StringBuilder sb = new StringBuilder();

          string[] keyall = req.Form.AllKeys;              //所有post的键

          foreach (string str in keyall)                   //添加post数据

          {

                sb.AppendFormat("{0}={1}&", str, req.Form[str]);

          }

          foreach (string str in req.QueryString.AllKeys)  //添加get的数据

          {

                sb.AppendFormat("{0}={1}&", str, req.QueryString[str]);

          }

          if (sb.ToString().EndsWith("&"))                 //删除最后的“&”

          {

                sb.Remove(sb.Length - 1, 1);

          }

          return sb.ToString();

     }

     //对指定名字的Post数据值进行正则表达式替换

     //postname:post的键;patt:正则表达式;replstr:替换成的字符串

     public static string getPostItem(string postname, string patt, string replstr)

     {

          try

          {

                 string result = HttpContext.Current.Request[postname];

                 if (result == null)

                 {

                        result = SearchQuery.get_Nav()[postname];  //获取值

                 }

                 if (patt == null || patt.Trim() == "")      //如果不需要匹配,直接返回

                 {

                        if (result == null)

                        {

                               return "";

                        }

                        return result;

                 }

                 return Regex.Replace(result, patt, replstr, RegexOptions.Ignore Case);                                                      //替换

          }

          catch

          {

                 return "";

          }

     }

     // 得到指定名字的post数据值

     public static string getPostItem(string postname)

     {

          return getPostItem(postname, "", "");

     }

}

     #endregion

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论