我在replace已find的文本时遇到问题。 在这里,我的代码到目前为止尝试replace,似乎无法得到它的工作。 我知道我需要使用插入方法,但不确定放在那里。
这里我的代码到目前为止:
RichTextBox frm1TB = ((Form1)this.Owner).txtDisplay; foundAt = frm1TB.Text.IndexOf(replacingRichText.Text); if (foundAt == -1) { MessageBox.Show("Not Found"); } else { frm1TB.Text = frm1TB.Text.Replace(searchText.Text, replacingRichText.Text); frm1TB.Text.Insert(); frm1TB.SelectionStart = foundAt; frm1TB.SelectionLength = searchText.TextLength; }
我有1个richtextbox上的form1,然后2个文本框上的表单2 1form查找和findnext被称为searchText和2框replace和replace下一个名为replaceRIchText。
你可能不得不以相反的顺序来替换这些字符串,因为一旦你替换了一个字符串,你的索引和长度将会不同。
另外,对于您的代码,我认为您需要将其更改为如下所示:
//frm1TB.Text = frm1TB.Text.Replace(searchText.Text, replacingRichText.Text); //frm1TB.Text.Insert(); frm1TB.SelectionStart = foundAt; frm1TB.SelectionLength = searchText.TextLength; frm1TB.SelectedText = replacingRichText.Text;
这是一个简单的例子(需要重构):
private void ReplaceText(string findText, string replaceText) { int index = frm1TB.Text.Length - 1; index = frm1TB.Text.LastIndexOf(findText, index); while (index > -1) { frm1TB.SelectionStart = index; frm1TB.SelectionLength = findText.Length; frm1TB.SelectedText = replaceText; index = frm1TB.Text.LastIndexOf(findText, index); } }