我想在C#中編寫一個函數,用自定義字符串替換正則表達式模式的所有出現。我需要使用匹配字符串來生成替換字符串,所以我想循環而不是使用Regex.Replace()。當我調試我的代碼時,正則表達式模式匹配我的html字符串的一部分,並進入foreach循環,但是,string.Replace函數不會取代匹配。有誰知道是什麼原因導致這種情況發生?C#正則表達式替換使用匹配值
我的功能簡化版本: -
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的答案。 – Matthew
你爲什麼使用'Compiled'選項?只有當你有明確的需求時,你才應該使用它。它提供的性能提升並不是很好,它不是免費的。 [ref](http://blogs.msdn.com/b/bclteam/archive/2004/11/12/256783.aspx) –