在指定字符串后添加字符串
本文关键字:字符串 添加 | 更新日期: 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。