我如何替换文本之间的两个值没有正则表达式

本文关键字:两个 正则表达式 之间 何替换 替换 文本 | 更新日期: 2023-09-27 18:18:11

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

        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)和(qt)之间的所有内容,所以结果会变成"hello (q)替换(qt) hello"。但是结果不是我刚才解释的那样,而是"hello (q)替换(qt)qt) hello"。为什么会发生这种情况?

我如何替换文本之间的两个值没有正则表达式

Replace

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)替换(qt) hello