如果使用的是RichTextBox的话,那么直接调用RichTextBox.Find就可以实现查找功能了.Replace功能的实现:利用查找功能找到要替换的文本,然后
RichTextBox.SelectedText = ReplaceWords;就可以了;如果使用的是TextBox的话,将整个文本的内容读到一个string中,再利用IndexOf实现查找,用Replace实现替换.也可以考虑使用正则表达式来实现.

解决方案 »

  1.   

    这些我知道 ,我只知道用Indexof查找第一个字符串 ,但是我不知道怎么用Indexof实现查找下一个字符串,并且如何选中查找的字符串以及获得当前鼠标的位置
      

  2.   

    可以利用IndexOf的重载版本public int IndexOf(string value,int startIndex);查找下一个字符串,第二个参数传递上一次查找返回值+value.Length
    获得当前鼠标位置,还是光标位置? 如果是鼠标可以捕捉你的MouseMove事件,或是使用API:
    [DllImport("user32.dll", EntryPoint="GetCursorPos")]
    public static extern int GetCursorPos (
    ref Point lpPoint
    );如果是光标:
    [DllImport("user32.dll", EntryPoint="GetCaretPos")]
    public static extern int GetCaretPos (
    ref Point lpPoint
    );
      

  3.   

    至于选中问题:如果是TextBox,那么TextBox.Select(int start,int length),并配合TextBox.Focus---没有这句就看不到选中效果
    如果是RichTextBox,调用RichTextBox.Find后就自动选中了,如果还看不到选中效果,可以把RichTextBox的HideSelection属性设为false
      

  4.   

    能否写出比较完整的代码出来?(用的是TextBox)
      

  5.   

    String.IndexOf
    String.Replace
    不可以吗?
      

  6.   

    用String.Replace()可以实现啊//具体用法请见MSDN FOR .NET或使用正则表达式
      

  7.   

    string str1="visualstudio";
    //查找 用法
    // string str2="studio";// int result=str1.IndexOf(str2,0);
    // if(result>0)
    // MessageBox.Show("Found");
    // else
    // MessageBox.Show("Not Found");分割 用法(到一個array裡面就ok了)
    string total="aaa,bbb,ccc,dddd";
    string[]strArray;
    char[]charArray=new char[]{','};
    strArray=total.Split(charArray);.
    正则表达式;
    正则表达式
    string s = "asdfjl;ksjfl;asjd######kfl;jaksd;lfj;lsadfjk;lfdlkjhsjnvkashfkjsadkflksaldhfklasdfasdl;kfj;lsjdaf;laksjdf;khsd;lfjlas$$$$$dhfk;lajsdkfljsadklfhskldfhklsadfhlkshdfklasdkflasdhkflhdsalfhsaklfhnklsdhfkshdflkhdskfljsdkfjhslkdfkasjdfklashfd"; string r = "你想要换的string"; Console.WriteLine(Regex.Replace(s,@"######.*?\$\$\$\$\$",r));or Console.WriteLine(Regex.Replace(s,@"#{6}.*?\${5}",r));
            Console.WriteLine(Regex.Replace(s,@"(?<token1>######)(?<anything>.*?)(?<token2>\$\$\$\$\$)","${token1}"+r+"${token2}"));or Console.WriteLine(Regex.Replace(s,@"(?<token1>#{6})(?<anything>.*?)(?<token2>\${5})","${token1}"+r+"${token2}"));
      

  8.   

    用Indexof()找到第一个以后,再找下一个可以用substring()把第一个以后的子串提取
    出来循环处理!
      

  9.   

    string sr1 = this.textBox1.Text ;
    Form1 form1 = new Form1() ;
    string sr2 = form1.textBox1.Text ;
    int result = sr2.IndexOf(sr1,0) ;
    if(result>0)
    {
     form1.textBox1.Select(0,this.textBox1.Text.Length) ; 
     form1.textBox1.Focus() ;
    }
    调试的时候没有发现错误,但是没有实现查找的功能,并且没有选中要查找的字符串,为什么?
    请高手指教,最好能写出具体的代码!
      

  10.   

    从调试的结果看出,语句 int result = sr2.IndexOf(sr1,0)的返回值小与0
    为什么?
    请高手赐教?
      

  11.   

    以下是个参考,实现了大体的查找替换功能,你可能要改写成你需要的代码,具体的细节处理由你自己来写:)int startIndex = 0;
    private void buttonFind_Click(object sender, System.EventArgs e)
    {
    string words = this.textBox1.Text;
    string tobefound = this.textBox2.Text;//textBox2中放要查找的字符
    if(startIndex == -1)//not found
    return;
      startIndex = words.IndexOf(tobefound,startIndex);
      if(startIndex >= 0 && startIndex < words.Length)
      {
       this.textBox1.Select(startIndex,tobefound.Length);
       this.textBox1.Focus();
       startIndex += tobefound.Length;
      }
    }private void buttonReplace_Click(object sender, System.EventArgs e)
    {
     if(this.textBox1.SelectedText.Length > 0)
       this.textBox1.SelectedText = this.textBox3.Text;//textBox3中放要替换的字符
    }
      

  12.   

    非常感谢你的热心帮助,但是调试的时候还是遇到了问题,下面是我写的代码,调试的时候
    没有错误,但是没有实现查找功能,调试的结果都是startIndex == -1情况  
    private void button1_Click(object sender, System.EventArgs e)
    {
     string sr1 = this.textBox1.Text ;
     Form1 form1 = new Form1() ;
     string sr2 = form1.textBox1.Text ;
     int startIndex = 0 ;
     startIndex = sr2.IndexOf(sr1,startIndex) ;
     if(startIndex==-1)
    {
      记事本 notepad = new 记事本() ;
      notepad.Show() ;
    }
    if(startIndex >= 0 && startIndex < sr2.Length)
    {
      form1.textBox1.Select(startIndex ,sr1.Length) ;
      form1.textBox1.Focus() ;
      startIndex += sr1.Length ;
    }
    }