我有这个代码:
string a = "**MustbeReplaced**asdgasfsff**MustbeReplaced**asdfafasfsa";
//MustbeReplaced should be Replaced1, Replaced2, and so on
a = a.Replace("MustbeReplaced", "Replaced");
Run Code Online (Sandbox Code Playgroud)
每次有字符串替换时,我想用动态值替换它.例如,上面字符串的输出应该是:
"**Replaced1**asdgasfsff**Replaced2**asdfafasfsa"
Run Code Online (Sandbox Code Playgroud)
我知道String.Replace,但据我所知,它只适用于静态String替换.
有没有办法做到这一点?
您可以使用Regex该类并提供将为每个匹配调用一次的委托.它需要返回字符串以替换匹配的文本.
你只需声明一个持有你的计数器的变量:
string a = "**MustbeReplaced**asdgasfsff**MustbeReplaced**asdfafasfsa";
int replacementIndex = 0;
string b = Regex.Replace(a, "MustbeReplaced", match =>
{
replacementIndex++;
return $"Replaced{replacementIndex}";
});
Run Code Online (Sandbox Code Playgroud)
运行此之后,b将包含以下内容:
**Replaced1**asdgasfsff**Replaced2**asdfafasfsa
Run Code Online (Sandbox Code Playgroud)
警告:由于您现在正在使用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}";
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1389 次 |
| 最近记录: |