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

本文关键字:字符串 添加 | 更新日期: 2023-09-27 18:13:12

假设我有以下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#中做到这一点。

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

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

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

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

另一种方法:

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/'">");
}

如果你喜欢使用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;
}

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

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

你可以把它翻转过来并替换HEAD的打开,在开头插入一个标签。

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