C# 在C中与计数器一起使用Contains或IndexOf#
我正在尝试使用一个带有Replace的计数器,但没有成功C# 在C中与计数器一起使用Contains或IndexOf#,c#,replace,C#,Replace,我正在尝试使用一个带有Replace的计数器,但没有成功 int ObjN = 0; while (editor.Rtf.Contains("CreateObject") == true) { editor.Rtf = editor.Rtf.Replace("CreateObject", "Object" + ObjN++); } 输出为: Object0 Object0 Object0 我预料 Object0 Object1 Object2 相反。如何获得该输出?问题是您的repla
int ObjN = 0;
while (editor.Rtf.Contains("CreateObject") == true)
{
editor.Rtf = editor.Rtf.Replace("CreateObject", "Object" + ObjN++);
}
输出为:
Object0
Object0
Object0
我预料
Object0
Object1
Object2
相反。如何获得该输出?问题是您的replace语句将替换字符串中“CreateObject”的所有实例,它在替换第一个实例后不会停止。去掉replace行,而是使用.IndexOf搜索第一个实例的索引,然后手动替换它。在调用
replace
方法之前,将对表达式“Object”+ObjN++
求值一次,而不是每次替换。拥有循环没有帮助,因为Replace
方法将替换所有实例,而不仅仅是第一个实例
如果使用Regex.Replace
可以指定一个函数来创建值:
int cnt = 0;
editor.Rtf = Regex.Replace(editor.Rtf, "CreateObject", m => "Object" + (cnt++));
即使标题与您发布的代码也没有意义。“m=>”是什么意思?匹配?@Tom:这是一个lambda表达式,是编写函数的一种简短方式。
m
将是函数中的参数,它是Replace
方法调用函数的Match
对象。