有没有办法用匹配中相同长度的字符替换匹配表达式?以下代码更易于理解:
var input = "hello hellspawn, goto hell!";
var pattern = @"(hell)(?!o)";
var replacement = "****"; // is there a dynamic way to specify length here?
var replaced = Regex.Replace(input, pattern, replacement, RegexOptions.IgnoreCase);
我可以用火柴:
var sbInput = new StringBuilder(input);
var sb = new StringBuilder();
var matches = Regex.Matches(input, pattern, RegexOptions.IgnoreCase);
foreach (Match match in matches) {
sb.Length = 0;
for (var i = 0; i < match.Length; i++) {
sb.Append("*");
}
sbInput.Replace(match.Value, sb.ToString(), match.Index, match.Length);
}
var replaced = sbInput.ToString();