我想在两个值之间替换文本,而不是使用正则表达式。我希望用户通过使用两个文本框来定义他/她将在哪些值之间找到文本。到目前为止,这是我写的。它正在接受一个小小的错误,我一直试图摆脱几个小时。
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)你好"。为什么会这样?
答案 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