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

时间:2015-10-19 00:19:39

标签: c# forms textbox

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

        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)之间的所有内容。所以结果会变成"你好(q)替换(qt)你好"。但是,正如我刚才所解释的那样,结果却是"你好(q)替换(qt)qt)你好"。为什么会这样?

2 个答案:

答案 0 :(得分:1)

替换

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

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

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

答案 1 :(得分:0)

你可以像这样做吗?

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

输出:

  

hello(q)replace(qt)hello