在C#中使用Contains或IndexOf与计数器

时间:2015-02-11 22:47:02

标签: c# replace

我试图使用替换但没有成功的计数器。

int ObjN = 0;
while (editor.Rtf.Contains("CreateObject") == true) 
{
 editor.Rtf = editor.Rtf.Replace("CreateObject", "Object" + ObjN++);
}

输出是:

Object0
Object0
Object0

我期待

Object0
Object1
Object2

代替。我怎样才能得到那个输出?

2 个答案:

答案 0 :(得分:1)

问题是你的replace语句将替换" CreateObject"的所有实例。在字符串中,它在替换第一个实例后不会停止。摆脱替换行,而是使用.IndexOf搜索第一个实例的索引,然后手动替换它。

答案 1 :(得分:1)

在调用"Object" + ObjN++方法之前,将对Replace表达式进行一次计算,而不是每次替换。循环没有帮助,因为Replace方法将替换所有实例,而不仅仅是第一个。

如果使用Regex.Replace,您可以指定一个函数来创建值:

int cnt = 0;
editor.Rtf = Regex.Replace(editor.Rtf, "CreateObject", m => "Object" + (cnt++));