聚合搜索(二)

1.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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值