十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
这篇文章主要介绍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() 查找指定〖字符 或 字符串〗 =★*★*★= ///向上查找指定〖字符 或 字符串〗(不区分大小写) /// 内容文本框,指定为 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/// 参数1(rbox):内容文本框,指定为 RichTextBox 文本框类型 /// 参数2(str):用户指定要查找的字符串 ///
向下查找
#region =★*★*★= FindDown() 查找指定〖字符 或 字符串〗=★*★*★= ///向下 查找指定〖字符 或 字符串〗 /// 内容文本框,指定为 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):用户指定要查找的字符串 /// 参数3(TrueFales):bool 真:限定大小写 假:不分大小写 向下查找指定〖字符 或 字符串〗(限定大小写) /// 内容文本框,指定为 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 的查找方法 =★*★*★= ////// 参数1(rbox):内容文本框,指定为 RichTextBox 文本框类型 /// 参数2(FindStr):用户指定要查找的字符串 ///类似 VS 的查找方法(不区分大小写向下查找) /// 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; } } } ////// 参数1(txt):RichTextBox文本框 /// 参数2(FindString):查找字符串 类似 VS 的查找方法(不区分大小写向下查找) /// 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/// 参数1(txt):RichTextBox文本框 /// 参数2(FindString):查找字符串
替换 与 全部替换(功能不是很全)
#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 =★*★*★= 替换字符串 =★*★*★= /// 替换字符串 /// 查找的内容 /// 要替换的内容 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(FindString):查找的内容 /// 参数2(ReplString):要替换的内容 全部替换 /// 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 =★*★*★= 全部替换(区分/不区分大小写) =★*★*★= ////// 参数1(txt):RichTextBox 文本框 /// 参数2(FindString):查找字符串 /// 参数3(ReplString):替换字符串 /// 参数4(trueFales):bool 真:区分大小写,假:不区分大小写 全部替换(区分大小写) /// 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 =★*★*★= 消息提示,提示用户查找结果 =★*★*★= ///消息提示,提示用户查找结果 /// 用户指定要查找的字符串 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/// 参数1(str):用户指定要查找的字符串
查找字符着色
#region =★*★*★= 查找字符上色 =★*★*★= ///查找字符上色 /// RichTextBox private static void myColor(RichTextBox rtxt) { rtxt.SelectionColor = Color.Coral; } #endregion
C#是一个简单、通用、面向对象的编程语言,它由微软Microsoft开发,继承了C和C++强大功能,并且去掉了一些它们的复杂特性,C#综合了VB简单的可视化操作和C++的高运行效率,以其强大的操作能力、优雅的语法风格、创新的语言特性和便捷的面向组件编程从而成为.NET开发的首选语言,但它不适用于编写时间急迫或性能非常高的代码,因为C#缺乏性能极高的应用程序所需要的关键功能。
以上是“C#如何实现记事本查找与替换功能”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注创新互联行业资讯频道!