我有以下代码:
string a = "**MustbeReplaced**asdgasfsff**MustbeReplaced**asdfafasfsa";
//MustbeReplaced should be Replaced1, Replaced2, and so on
a = a.Replace("MustbeReplaced", "Replaced");
每次有字符串替换时,我都想用一个动态值替换它。例如,上述字符串的输出应为:
"**Replaced1**asdgasfsff**Replaced2**asdfafasfsa"
我知道String.Replace,但是据我所知,它仅用于静态String
替换。
有什么办法吗?
您可以使用Regex
该类并提供一个将为每个匹配调用一次的委托。它需要返回字符串以替换匹配的文本。
您只需要声明一个变量来保存您的计数器:
string a = "**MustbeReplaced**asdgasfsff**MustbeReplaced**asdfafasfsa";
int replacementIndex = 0;
string b = Regex.Replace(a, "MustbeReplaced", match =>
{
replacementIndex++;
return $"Replaced{replacementIndex}";
});
运行此命令后,b
将包含以下内容:
**Replaced1**asdgasfsff**Replaced2**asdfafasfsa
警告:由于您现在正在使用Regex
该类,因此请注意Regex
将用于增强模式的所有特殊字符,以防止简单的逐字符匹配。如果要替换包含星号,问号,括号等符号的文本,则需要对它们进行转义。
幸运的是,我们可以简单地要求Regex
班级为我们做到这一点:
string a = "**Mustbe?Replaced**asdgasfsff**Mustbe?Replaced**asdfafasfsa";
int replacementIndex = 0;
string b = Regex.Replace(a, Regex.Escape("Mustbe?Replaced"), match =>
{
replacementIndex++;
return $"Replaced{replacementIndex}";
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句