189 8069 5689

C#如何实现记事本查找与替换功能

这篇文章主要介绍C#如何实现记事本查找与替换功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

公司主营业务:做网站、成都网站制作、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联推出淳安免费做网站回馈大家。

先上效果图

C#如何实现记事本查找与替换功能C#如何实现记事本查找与替换功能

定义全局变量

#region =★*★*★= 〖查找替换〗的自定义变量 =★*★*★=
  ///  获取或设置查找起始位置 
  static int Index = 0;
  ///  查找到的字符串数量 
  static int count = 0;
  ///  查找字符是否变更
  static string strE = string.Empty;
  ///  记录原始光标位置 
  static int MemoIndex = -1;
  ///  过度字符串变量 
  static string str = string.Empty;
  ///  实例化富文本 
  static RichTextBox r = new RichTextBox();
  #endregion

向上查找

#region =★*★*★= FindUp() 查找指定〖字符 或 字符串〗 =★*★*★=
  /// 向上查找指定〖字符 或 字符串〗(不区分大小写)  
  /// 参数1(rbox):内容文本框,指定为 RichTextBox 文本框类型 
  /// 参数2(str):用户指定要查找的字符串 
  ///   
  /// 内容文本框,指定为 RichTextBox 文本框类型 
  /// 用户指定要查找的字符串 
  public static void FindUp(RichTextBox rtxt, string str)
  {
   if (strE != str)
   {
    rtxt.SelectionStart = rtxt.Text.Length;
    strE = str;
   }
 
   Index = rtxt.SelectionStart;
   Index = rtxt.Find(str, 0, Index, RichTextBoxFinds.Reverse);
   if (Index >= 0)
   {
    rtxt.SelectionStart = Index;
    rtxt.SelectionLength = str.Length;
    count++;
    rtxt.Focus();
    myColor(rtxt);//设定关键字为颜色
    if (Index <= 0)
    {
     seeks(str);
     count = 0;
    }
   }
   else if (Index < 0)
   {
    seeks(str);
    count = 0;
   }
  }
  #endregion

向下查找

#region =★*★*★= FindDown() 查找指定〖字符 或 字符串〗=★*★*★=
  /// 向下 查找指定〖字符 或 字符串〗  
  /// 参数1(rbox):内容文本框,指定为 RichTextBox 文本框类型 
  /// 参数2(FindStr):用户指定要查找的字符串
  /// 参数3(TrueFales):bool 真:限定大小写 假:不分大小写
  /// 内容文本框,指定为 RichTextBox 文本框类型 
  /// 用户指定要查找的字符串 
  /// bool 真:限定大小写 假:不分大小写 
  public static void FindDown(RichTextBox rtxt, string FindStr,bool TrueFales)
  {
   if (TrueFales)
    fileFindDownMax(rtxt, FindStr);
   else
    fileFindDownMin(rtxt, FindStr);
  }
  #endregion
 
 
  #region =★*★*★= 简单的从上到下查找 =★*★*★=
  /// 向下查找指定〖字符 或 字符串〗(限定大小写)  
  /// 参数1(rbox):内容文本框,指定为 RichTextBox 文本框类型 
  /// 参数2(FindStr):用户指定要查找的字符串 
  ///   
  /// 内容文本框,指定为 RichTextBox 文本框类型 
  /// 用户指定要查找的字符串 
  private static void FindDownmax(RichTextBox rtxt, string FindStr)
  {
   Index = rtxt.Find(FindStr, Index, RichTextBoxFinds.MatchCase);
   if (Index < 0 || Index > rtxt.Text.Length)
   {
    seeks(FindStr);
    count = 0;
    Index = 0;
   }
   else
   {
    rtxt.Select(Index, FindStr.Length);
    myColor(rtxt);//设定关键字为颜色
    Index += FindStr.Length;
    rtxt.Focus();
   }
  }
 
  /// 向下查找指定〖字符 或 字符串〗(不区分大小写)  
  /// 参数1(rbox):内容文本框,指定为 RichTextBox 文本框类型 
  /// 参数2(FindStr):用户指定要查找的字符串 
  ///   
  /// 内容文本框,指定为 RichTextBox 文本框类型 
  /// 用户指定要查找的字符串 
  private static void FindDownMin(RichTextBox rtxt, string FindStr)
  {
   Index = rtxt.Find(FindStr, Index, RichTextBoxFinds.None);
   if (Index < 0 || Index > rtxt.Text.Length)
   {
    seeks(FindStr);
    count = 0;
    Index = 0;
   }
   else
   {
    rtxt.Select(Index, FindStr.Length);
    myColor(rtxt);//设定关键字为颜色
    Index += FindStr.Length;
    rtxt.Focus();
   }
  }
  #endregion
 
  //* 类似 VS 的查找方法 */
  #region =★*★*★= 类似 VS 的查找方法 =★*★*★=
  ///  类似 VS 的查找方法(不区分大小写向下查找) 
  /// 参数1(txt):RichTextBox文本框
  /// 参数2(FindString):查找字符串
  /// RichTextBox文本框
  /// 查找字符串
  private static void fileFindDownMax(RichTextBox rtxt, string FindString)
  {
   if (MemoIndex < 0)
   {
    MemoIndex = rtxt.SelectionStart;
    if (MemoIndex > 10 && MemoIndex + FindString.Length <= rtxt.Text.Length)
    {
     str = rtxt.Text.Substring(0, MemoIndex + FindString.Length - 1);//截取光标位置 + 查找字符数 - 1 位数
     Index = rtxt.SelectionStart;
     r.Text = str;
    }
    else
    {
     str = rtxt.Text;
     r.Text = rtxt.Text;
     Index = rtxt.SelectionStart;
    }
   }
   if (Index < str.Length - (FindString.Length - 1) && Index >= 0)
   {
    Index = r.Find(FindString, Index, RichTextBoxFinds.None);
    if (Index < 0 || Index > r.Text.Length)
    {
     seeks(FindString);
     count = 0;
     Index = 0;
     MemoIndex = -1;
    }
    else
    {
     rtxt.Select(Index, FindString.Length);
     myColor(rtxt);//设定关键字为颜色
     rtxt.Focus();
     count++;
 
     Index += FindString.Length;
     if (Index > str.Length - FindString.Length)
     {
      seeks(FindString);
      MemoIndex = -1;
      Index = 0;
      count = 0;
     }
    }
   }
   else if (Index < rtxt.Text.Length && Index >= 0)
   {
    Index = rtxt.Find(FindString, Index, RichTextBoxFinds.None);
    if (Index == -1)//(Index >= txt.Text.Length && Index <= 0)
    {
     if (r.Text != "")
     {
      Index = 0; Index = r.Find(FindString, Index, RichTextBoxFinds.None);
      if (Index < 0 || Index > r.Text.Length)
      {
       seeks(FindString);
       count = 0;
       Index = 0;
       MemoIndex = -1;
      }
      else
      {
       rtxt.Select(Index, FindString.Length);
       myColor(rtxt);//设定关键字为颜色
       rtxt.Focus();
       Index += FindString.Length;
       count++;
       if (Index > str.Length - FindString.Length)
       {
        seeks(FindString);
        MemoIndex = -1;
        Index = 0;
        count = 0;
       }
      }
     }
     else
     {
      seeks(FindString);
      MemoIndex = -1;
      Index = 0;
      count = 0;
     }
    }
    else
    {
     rtxt.Select(Index, FindString.Length);//在RichTextBox控件中搜索关键字
     Index += FindString.Length;//递增标识查询关键字的初始长度
     myColor(rtxt);//设定关键字为颜色
     rtxt.Focus();
     count++;
    }
   }
   else
   {
    Index = 0; Index = r.Find(FindString, Index, RichTextBoxFinds.None);
    if (Index < r.Text.Length - FindString.Length && Index >= 0)
    {
     r.Select(Index, FindString.Length);
     rtxt.Select(Index, FindString.Length);
     myColor(rtxt);//设定关键字为颜色
     Index += FindString.Length;//递增标识查询关键字的初始长度
     rtxt.Focus();
     count++;
    }
    else
    {
     seeks(FindString);
     MemoIndex = -1;
     Index = 0;
     count = 0;
    }
   }
  }
 
  ///  类似 VS 的查找方法(不区分大小写向下查找) 
  /// 参数1(txt):RichTextBox文本框
  /// 参数2(FindString):查找字符串
  /// RichTextBox文本框
  /// 查找字符串
  private static void fileFindDownMin(RichTextBox rtxt, string FindString)
  {
   if (MemoIndex < 0)
   {
    MemoIndex = rtxt.SelectionStart;
    if (MemoIndex > 10 && MemoIndex + FindString.Length <= rtxt.Text.Length)
    {
     str = rtxt.Text.Substring(0, MemoIndex + FindString.Length - 1);
     Index = rtxt.SelectionStart;
     r.Text = str;
    }
    else
    {
     str = rtxt.Text;
     r.Text = rtxt.Text;
     Index = rtxt.SelectionStart;
    }
   }
   if (Index < str.Length - (FindString.Length - 1) && Index >= 0)
   {
    Index = r.Find(FindString, Index, RichTextBoxFinds.MatchCase);
    if (Index < 0 || Index > r.Text.Length)
    {
     seeks(FindString);
     count = 0;
     Index = 0;
     MemoIndex = -1;
    }
    else
    {
     rtxt.Select(Index, FindString.Length);
     myColor(rtxt);//设定关键字为颜色
     rtxt.Focus();
     count++;
 
     Index += FindString.Length;
     if (Index > str.Length - FindString.Length)
     {
      seeks(FindString);
      MemoIndex = -1;
      Index = 0;
      count = 0;
     }
    }
   }
   else if (Index < rtxt.Text.Length && Index >= 0)
   {
    Index = rtxt.Find(FindString, Index, RichTextBoxFinds.MatchCase);
    if (Index == -1)
    {
     if (r.Text != "")
     {
      Index = 0; Index = r.Find(FindString, Index, RichTextBoxFinds.MatchCase);
      if (Index < 0 || Index > r.Text.Length)
      {
       seeks(FindString);
       count = 0;
       Index = 0;
       MemoIndex = -1;
      }
      else
      {
       rtxt.Select(Index, FindString.Length);
       myColor(rtxt);//设定关键字为颜色
       rtxt.Focus();
       Index += FindString.Length;
       count++;
       if (Index > str.Length - FindString.Length)
       {
        seeks(FindString);
        MemoIndex = -1;
        Index = 0;
        count = 0;
       }
      }
     }
     else
     {
      seeks(FindString);
      MemoIndex = -1;
      Index = 0;
      count = 0;
     }
    }
    else
    {
     rtxt.Select(Index, FindString.Length);//在RichTextBox控件中搜索关键字
     Index += FindString.Length;//递增标识查询关键字的初始长度
     myColor(rtxt);//设定关键字为颜色
     rtxt.Focus();
     count++;
    }
   }
   else
   {
    Index = 0; Index = r.Find(FindString, Index, RichTextBoxFinds.MatchCase);
    if (Index < r.Text.Length - FindString.Length && Index >= 0)
    {
     r.Select(Index, FindString.Length);
     rtxt.Select(Index, FindString.Length);
     myColor(rtxt);//设定关键字为颜色
     Index += FindString.Length;//递增标识查询关键字的初始长度
     rtxt.Focus();
     count++;
    }
    else
    {
     seeks(FindString);
     MemoIndex = -1;
     Index = 0;
     count = 0;
    }
   }
  }
#endregion

替换 与 全部替换(功能不是很全)

#region =★*★*★= 〖替换〗与〖全部替换〗 =★*★*★=
 
 #region =★*★*★= 单次替换字符串 =★*★*★=
  ///  替换 
  /// RichTextBox
  /// 查找字符串
  /// 替换字符串
  /// (bool值)区分大小写 真:区分假:不区分
  public static void replaces(RichTextBox rtxt, string FindString, string ReplString, bool TrueFalse)
  {
   string txtSt = rtxt.SelectedText;
   if (FindString.Equals(txtSt))
   {
    int fs = FindString.Length;
    int rs = ReplString.Length;
    int cs = fs - rs;
    rtxt.SelectionLength = FindString.Length;
    rtxt.SelectionColor = Color.Coral;
    rtxt.SelectedText = ReplString;//textBox2中放要替换的字符 
    rtxt.Focus();
    MemoIndex = -1;
    rtxt.SelectionStart += cs;
   }
   FindDown(rtxt, FindString, TrueFalse);
  }
 
  #region =★*★*★= 替换字符串 =★*★*★=
  /// 替换字符串  
  /// 参数1(FindString):查找的内容 
  /// 参数2(ReplString):要替换的内容  
  /// 查找的内容 
  /// 要替换的内容 
  private static void replace(RichTextBox rtxt, string FindString, string ReplString)
  {
   rtxt.SelectionLength = FindString.Length;
   rtxt.SelectedText = ReplString;//textBox2中放要替换的字符 
   Index = rtxt.SelectionStart;//获取或设置光标选定位置
  }
  #endregion
  #endregion
 
 
  #region =★*★*★= 〖全部替换〗 =★*★*★=
  ///  全部替换 
  /// 参数1(txt):RichTextBox 文本框
  /// 参数2(FindString):查找字符串
  /// 参数3(ReplString):替换字符串
  /// 参数4(trueFales):bool 真:区分大小写,假:不区分大小写
  /// RichTextBox 文本框
  /// 查找字符串
  /// 替换字符串
  /// bool 真:区分大小写,假:不区分大小写
  public static void ReplAll(RichTextBox rtxt, string FindString, string ReplString, bool trueFales)
  {
   if (trueFales)
    onDistinCase(rtxt, FindString, ReplString);
   else
    offDistinCase(rtxt, FindString, ReplString);
  }
 
  #region =★*★*★= 全部替换(区分/不区分大小写) =★*★*★=
  ///  全部替换(区分大小写) 
  /// RichTextBox 文本框
  /// 查找字符串
  /// 替换字符串
  private static void onDistinCase(RichTextBox rtxt, string FindStr, string ReplStr)
  {
   while (Index >= 0 || Index <= rtxt.Text.Length)
   {
    int cot = FindStr.Length - ReplStr.Length;
    Index = rtxt.Find(FindStr, Index, RichTextBoxFinds.MatchCase);
    if (Index < 0 || Index > rtxt.Text.Length)
    {
     DialogResult r = MessageBox.Show(string.Format("查找结束,已经为您找到{0}个结果。", count),
       "查找结果-Mxdr温馨提示!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     if (r == DialogResult.Yes)
      count = 0;
     Index = 0;
     break;
    }
    else
    {
     rtxt.Select(Index, FindStr.Length);
     replace(rtxt, FindStr, ReplStr);
     Index += FindStr.Length;
     count++;
    }
   }
  }
 
  ///  全部替换(不区分大小写) 
  /// RichTextBox 文本框
  /// 查找字符串
  /// 替换字符串
  private static void offDistinCase(RichTextBox rtxt, string FindStr, string ReplStr)
  {
   while (Index >= 0 || Index <= rtxt.Text.Length)
   {
    int cot = FindStr.Length - ReplStr.Length;
    Index = rtxt.Find(FindStr, Index, RichTextBoxFinds.None);
    if (Index < 0 || Index > rtxt.Text.Length)
    {
     DialogResult r = MessageBox.Show(string.Format("查找结束,已经为您找到{0}个结果。", count),
       "查找结果-Mxdr温馨提示!!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
     if (r == DialogResult.Yes)
      count = 0;
     Index = 0;
     break;
    }
    else
    {
     rtxt.Select(Index, FindStr.Length);
     replace(rtxt, FindStr, ReplStr);
     Index += FindStr.Length;
     count++;
    }
   }
  }
  #endregion
  #endregion
 
  #endregion

消息弹窗

#region =★*★*★= 消息提示,提示用户查找结果 =★*★*★=
  ///  消息提示,提示用户查找结果  
  /// 参数1(str):用户指定要查找的字符串  
  /// 用户指定要查找的字符串 
  public static void seeks(string str)
  {
   if (count != 0)
    MessageBox.Show(string.Format("已查找完毕,共〖{0}〗个 \"{1}\"!", count, str), "查找结果-Mxdr温馨提示!!");
   else MessageBox.Show(string.Format("没有查找到 \"{0}\"!", str), "查找 - Mxdr温馨提示!");
  }
  #endregion

查找字符着色

#region =★*★*★= 查找字符上色 =★*★*★=
  ///  查找字符上色 
  /// RichTextBox
  private static void myColor(RichTextBox rtxt)
  {
   rtxt.SelectionColor = Color.Coral;
  }
  #endregion

C#是什么

C#是一个简单、通用、面向对象的编程语言,它由微软Microsoft开发,继承了C和C++强大功能,并且去掉了一些它们的复杂特性,C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程从而成为.NET开发的首选语言,但它不适用于编写时间急迫或性能非常高的代码,因为C#缺乏性能极高的应用程序所需要的关键功能。

以上是“C#如何实现记事本查找与替换功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!


分享文章:C#如何实现记事本查找与替换功能
本文地址:http://cdxtjz.cn/article/ggisgd.html

其他资讯