解决方案 »

  1.   


            //单次替换
            public static void replaces(RichTextBox rtxt, string FindString, string ReplString)
            {
                string txtSt = rtxt.SelectedText;
                if (FindString.Equals(txtSt))
                {
                    rtxt.SelectionLength = FindString.Length;
                    rtxt.SelectionColor = Color.Coral;
                    rtxt.SelectedText = ReplString;//textBox2中放要替换的字符  
                    rtxt.Focus();
                    s = -1;
                    fileFindDown(rtxt, FindString);   //查找(那个TextBox 不要了,不是必须的)
                }
                else fileFindDown(rtxt, FindString); //查找
            }替换会遇到一个问题,
    如:  查找(F)  替换(Ho~)  
    如果2个 F 之间不超出替换字符的 Length   ,那么它就会跳过第二个F 查找第三个F,然后找到结尾再找第二个F.现在头脑有点乱乱的,想不出来了...请帮帮忙
      

  2.   

    加入这个完善解决,太笨了....早应该想到了....                int fs = FindString.Length;
                    int rs = ReplString.Length;
                    int cs = fs - rs;                rtxt.SelectionStart += cs;
            public static void replaces(RichTextBox rtxt, string FindString, string ReplString)
            {
                //string txtSt = rtxt.Text.Substring(Index,FindString.Length);
                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();
                    MIndex = -1;
                    rtxt.SelectionStart += cs;
                    replFind(rtxt, FindString, ReplString);
                }
                else replFind(rtxt, FindString, ReplString);
            }虽然解决了,太还是达不到 VS 那种替换效果..........
      

  3.   

    达不到斑竹的境界,大概看一下就可以看清楚思路
    我只是知道有个经典的KMP字符串模式匹配算法
      

  4.   

    达不到斑竹的境界,大概看一下就可以看清楚思路
    我只是知道有个经典的KMP字符串模式匹配算法
    KMP算法看得太挠头....有机会再细细学习一下.
      

  5.   


    好多if else看着就头疼
      

  6.   

    以前也想做一个这种功能的,最后因复杂没做下去,Mark一下
      

  7.   


    这功能只是草草写出来的,还没有完善,后面可以自己完善一下,Index += FindStr.Length;  //查找方法中的这个可以去掉.        public static void replaces(RichTextBox rtxt, string FindString, string ReplString)
            {
                //string txtSt = rtxt.Text.Substring(Index,FindString.Length);
                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();
                    MIndex = -1;
                    rtxt.SelectionStart += cs;
                }
                 replFind(rtxt, FindString, ReplString);
            }