如何在没有正则表达式的情况下替换两个值之间的文本?

How can I replace text between two values without regex?

我想替换两个值之间的文本,而不是使用正则表达式。我希望用户通过使用两个文本框来定义 he/she 将在哪些值之间查找文本。到目前为止,这就是我写的。它正在工作接受我几个小时以来一直试图摆脱的一个小错误。

        string rw = richTextBox2.Text;
        string s = richTextBox1.Text;
        int start = s.IndexOf(textBox1.Text);
        int end = s.IndexOf(textBox2.Text);
        string textBefore = s.Substring(0, start);
        string textAfter = s.Substring(end + 1);
        string newText = rw;
        richTextBox1.Text = textBefore + newText + textAfter;

例如,我要替换的值是 "hello (q) replacethis (qt) hello",我想将 (q) 和 (qt) 之间的所有内容替换为“(q) replaced (qt)”,这样结果会变成"hello (q) replaced (qt) hello"。但是结果不是我刚才解释的结果,而是 "hello (q) replaced (qt)qt) hello"。为什么会这样?

替换

string textAfter = s.Substring(end + 1);

string textAfter = s.Substring(end + richTextBox2.Text.Length);

您想开始计算最终分隔符字符串之后的最后一段文本,而不是在最终分隔符字符串的开头(或开头之后的一段)

你能做到这么简单吗?

var original = "hello (q) replacethis (qt) hello";
var result = original.Replace("(q) replacethis (qt)", "(q) replaced (qt)");
Console.WriteLine(result);

这输出:

hello (q) replaced (qt) hello