【发布时间】:2012-09-19 10:23:40
【问题描述】:
我正在尝试用 C# 编写一个函数,用自定义字符串替换所有出现的正则表达式模式。我需要使用匹配字符串来生成替换字符串,所以我试图循环匹配而不是使用 Regex.Replace()。当我调试我的代码时,正则表达式模式匹配我的 html 字符串的一部分并进入 foreach 循环,但是 string.Replace 函数不会替换匹配项。有谁知道是什么原因导致这种情况发生?
我的函数的简化版:-
public static string GetHTML() {
string html = @"
<h1>This is a Title</h1>
@Html.Partial(""MyPartialView"")
";
Regex ItemRegex = new Regex(@"@Html.Partial\(""[a-zA-Z]+""\)", RegexOptions.Compiled);
foreach (Match ItemMatch in ItemRegex.Matches(html))
{
html.Replace(ItemMatch.Value, "<h2>My Partial View</h2>");
}
return html;
}
【问题讨论】:
-
string对象是不可变的,以进一步解释@sethflowers 的答案。 -
您为什么使用
Compiled选项?只有当您有明确的需要时,您才应该使用它。它提供的性能提升并不是那么好,而且它不是免费的。 ref