在指定的字符串后添加字符串

时间:2013-05-13 08:08:07

标签: c# string

说我有以下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 个答案:

答案 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;
}