如何在RichTextBox中查找和替换文本

时间:2018-09-04 18:37:07

标签: c#

我正在使用C#Windows窗体,该窗体执行以下操作:

我有一个RichTextbox,用于显示文本文件的内容。

我设法建立了一个带有搜索按钮的搜索框,供用户在此文件中搜索特定文本。但是,我还想创建一个“查找”文本框和按钮,以允许用户用他/她在文本框中输入并单击“替换”按钮的新文本替换找到的文本。我该如何替换文字? ... 谢谢。

以下是搜索文本的代码:

 private void buttonSearch_Click(object sender, EventArgs e)
 {
     int index = 0;
     var temp = richTextArea.Text;
     richTextArea.Text = "";
     richTextArea.Text = temp;

     while (index < richTextArea.Text.LastIndexOf(textBoxSearch.Text))
     {
         richTextArea.Find(textBoxSearch.Text, index, richTextArea.TextLength, RichTextBoxFinds.None);
         richTextArea.SelectionBackColor = Color.Yellow;

         index = richTextArea.Text.IndexOf(textBoxSearch.Text, index) + 1;
     }
 }

wnform

4 个答案:

答案 0 :(得分:1)

在这里,我为您提供了有效的答案

    public static void QuickReplace(RichTextBox rtb, String word, String word2)
    {
        rtb.Text = rtb.Text.Replace(word, word2);
    }

    private void button1_Click(object sender, EventArgs e)
    {
            QuickReplace(richTextBox1, textBox1.Text, textBox2.Text);
    }

richTextBox1替换为RichTextBox Control,并用textBox1 textBox2 TextBox和Controls

这将替换在RichTextBox

中找到的 ALL 所需文本

我专门针对这种操作编写了此代码。

如果您愿意,我可以提供代码来替换另一种形式的文本,例如记事本

希望对您有所帮助:)

答案 1 :(得分:0)

如果要替换文本中所有出现的搜索词:

richTextArea.Text = richTextArea.Text.Replace(textBoxSearch.Text, replaceTextBox.Text);

答案 2 :(得分:0)

如果要替换所有搜索实例,请使用:

richTextArea.Text = richTextArea.Text.Replace(textBoxSearch.Text, replaceTextBox.Text);

如果您只想替换一个事件,那么

richTextArea.Text = richTextArea.Text.Remove(index, textBoxSearch.Text.Length);
richTextArea.Text = richTextArea.Text.Insert(index, replaceTextBox.Text);

答案 3 :(得分:0)

我添加了两个按钮,一个按钮用于将文件的内容加载到富文本框中,另一个按钮用于查找和替换文本,然后将替换后的内容再次写入文件。

private void Load_File_Contents_Click(object sender, EventArgs e)
    {
        try
        {
            //Below code will read the file and set the rich textbox with the contents of file
            string filePath = @"C:\New folder\file1.txt";
            richTextBox1.Text = File.ReadAllText(filePath);
        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
        }
    }

    private void ReplaceAndWriteToFile_Click(object sender, EventArgs e)
    {
        try
        {
            string filePath = @"C:\New folder\file1.txt";

            //Find the "find" text from the richtextbox and replace it with the "replace" text
            string find = txtFind.Text.Trim(); //txtFind is textbox and will have the text that we want to find and replace
            string replace = txtReplace.Text.Trim(); //txtReplace is text and it will replace the find text with Replace text
            string newText = richTextBox1.Text.Replace(find, replace);
            richTextBox1.Text = newText;

            //Write the new contents of rich text box to file
            File.WriteAllText(filePath, richTextBox1.Text.Trim());
        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
        }
    }