2

假设我有以下 HTML 字符串

<head>

</head>

<body>
<img src="stickman.gif" width="24" height="39" alt="Stickman">
<a href="http://www.w3schools.com">W3Schools</a>
</body> 

我想在<head>标签之间添加一个字符串。所以最终的 HTML 字符串变成

<head>
<base href="http://www.w3schools.com/images/">
</head>

<body>
<img src="stickman.gif" width="24" height="39" alt="Stickman">
<a href="http://www.w3schools.com">W3Schools</a>
</body> 

所以我必须搜索第一次出现的<head>字符串,然后插入<base href="http://www.w3schools.com/images/">

我如何在 C# 中做到这一点。

4

4 回答 4

6

那么为什么不做一些简单的事情呢

myHtmlString.Replace("<head>", "<head><base href=\"http://www.w3schools.com/images/\">");

不是最优雅或可扩展的,但满足您问题的条件。

于 2013-05-13T08:14:49.203 回答
3

另一种方法:

string html = "<head></head><body><img src=\"stickman.gif\" width=\"24\" height=\"39\" alt=\"Stickman\"><a href=\"http://www.w3schools.com\">W3Schools</a></body>";
var index = html.IndexOf("<head>");

if (index >= 0)
{
     html = html.Insert(index + "<head>".Length, "<base href=\"http://www.w3schools.com/images/\">");
}
于 2013-05-13T08:15:45.037 回答
1

只需替换 HEAD 的尾部,在 HTML 中应该只有一个:

"<head></head>".Replace( "</head>" , "<a href=\"http://www.w3fools.com\">W3Fools</a>" + "</head>" );

您可以将其翻转到并替换 HEAD 的 open,以在开头插入标签。

如果您需要更复杂的东西,那么您应该考虑使用已解析的 HTML。

于 2013-05-13T08:15:14.067 回答
1

如果您更喜欢使用正则表达式,这就是它如何完成的

public string ReplaceHead(string html)
{
    string rx = "<head[^>]*>((.|\n)*?)head>";
    Regex r = new Regex(rx);
    MatchCollection matches = r.Matches(html);
    string s1, s2;
    Match m = matches[0];
    s1 = m.Value;
    s2 = "<base href="http://www.w3schools.com/images/">" + s1;
    html = html.Replace(s1, s2);
    return html;
}
于 2013-05-13T08:22:05.997 回答