说我有以下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#中执行此操作。
答案 0 :(得分:4)
那么为什么不做一些像
这样简单的事情myHtmlString.Replace("<head>", "<head><base href=\"http://www.w3schools.com/images/\">");
不是最优雅或可扩展的,但满足您的问题条件。
答案 1 :(得分: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/\">");
}
答案 2 :(得分:1)
只需替换HEAD的尾部,在HTML中应该只有一个:
"<head></head>".Replace( "</head>" , "<a href=\"http://www.w3fools.com\">W3Fools</a>" + "</head>" );
您可以将其翻转并替换HEAD的打开,以便在开头插入标记。
如果您需要更复杂的东西,那么您应该考虑使用已解析的HTML。
答案 3 :(得分:1)
如果您更喜欢使用Regex,这是怎么做的
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;
}