我有一个很大的文本字符串(它是一个源代码),我需要遍历某个字符串的出现(它可以出现在随机数量的地方),并用不同的值替换它们中的每一个,我不能使用Replace() 函数考虑到它用唯一值替换所有这些。
所以例如这个文本字符串:
REPLACE_ME
REPLACE_ME
REPLACE_ME
Run Code Online (Sandbox Code Playgroud)
需要转换为:
RAND_STRING1
RAND_STRING2
RAND_STRING3
Run Code Online (Sandbox Code Playgroud)
我一次阅读了整个文本,并且已经将它保存在一个字符串变量中。
Regex.Replace()接受一个MatchEvaluator委托,你可以用它来完成你想要的:
var input = "REPLACE_ME REPLACE_ME REPLACE_ME";
var substring = Regex.Escape("REPLACE_ME");
var substitute = "VALUE";
var counter = 1;
var result = Regex.Replace(input, substring, (m) => $"{prefix}{counter++}");
Run Code Online (Sandbox Code Playgroud)
resultwill 的值是"VALUE1 VALUE2 VALUE3"。
Regex.Escape()对于这个特定的例子,调用是多余的("REPLACE_ME"不包含任何需要转义的特殊字符),但我建议养成转义文字子字符串的习惯 - 特别是如果你想接受用户提供的输入!
当然,您可以在评估器中做任何您想做的事情:
var random = new Random();
var result = Regex.Replace(input, substring, (m) => random.Next().ToString());
// or
var result = Regex.Replace(input, substring, (m) => {
var randomString = someAPIClient.GetRandomValueFromRandomValueService();
var encoded = Encoding.UTF8.GetBytes(randomString);
return Convert.ToBase64String(encoded);
});
Run Code Online (Sandbox Code Playgroud)
你的想象力在这里设置了极限:)
| 归档时间: |
|
| 查看次数: |
160 次 |
| 最近记录: |