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

C# 在指定字符串后添加字符串,c#,string,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> 我想在标记之间添加一个字符串。因此,最终的HTML字符串变为 <head> &l

假设我有以下HTML字符串

<head>

</head>

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

我想在
标记之间添加一个字符串。因此,最终的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> 

因此,我必须首先搜索出现的
字符串,然后紧接着插入


我如何在C#中实现这一点

那么为什么不做一些简单的事情,比如

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

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

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

"<head></head>".Replace( "</head>" , "<a href=\"http://www.w3fools.com\">W3Fools</a>" + "</head>" );
“”。替换(“,”+);
您可以将其翻转并替换头部的开口,以便在开头插入标记


如果您需要更复杂的内容,那么您应该研究使用解析的HTML。

另一种方法:

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/\">");
}
string html=”“;
var index=html.IndexOf(“”);
如果(索引>=0)
{
html=html.Insert(索引+“”.Length,“”);
}

如果您喜欢使用正则表达式,这就是如何使用正则表达式的方法

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;
}
publicstringreplacehead(字符串html)
{
字符串rx=“]*>((.|\n)*?)头>”;
正则表达式r=新正则表达式(rx);
MatchCollection matches=r.matches(html);
字符串s1、s2;
匹配m=匹配[0];
s1=m.值;
s2=”“+s1;
html=html.Replace(s1,s2);
返回html;
}

您可以通过多种方式来实现这一点,而不是一种方式:-正则表达式-将文本按某个字符拆分,并将获得的数据写入需要添加的行-使用XMLreader/writerI我不介意使用RegexRegex。对于您在这里要做的事情来说,使用RegexRegex真是太过了。简单的.NET字符串操作已经足够好了,而且简单得多。在操作HTML/XML时不要使用正则表达式,因为HTML不是规则的,正则表达式是用来处理正则表达式的。@abelenky:什么时候正则表达式是用来处理正则表达式的?由于某种原因,如果前面有其他字符串,它就找不到“%”标记。上面所说的不关心它前面或后面是什么。如果它不起作用,肯定还有别的事情发生。@PutraKg,你的问题在标题标签前没有任何文本。这个问题是关于所有html的吗?这个问题只是一个例子。我也在测试真实网站的答案。对不起,当我写问题时忘了考虑<代码>文档类型>代码>。问题不是:“哪种方法更容易实现”,而是“如何使用regex实现”(但现在它已被编辑)无论如何,在执行替换之前检查标记内部的内容是有用的,这就是为什么我在Mine的一个项目中使用了类似的解决方案,我会使用这个解决方案,但一些人认为在我的情况下,正则表达式可能会被过度使用。因此,我编辑了我的问题并删除了regex首选项。无论如何,我感谢你的回答。如果你确定只有一个标记,并且你确定你要添加的字符串不在标记内,那就太过分了。使用我的解决方案,您可以在执行替换之前检查“”etc是否已在内部。当然,在这个例子中这是愚蠢的,但对于一个真实的案例来说可能会有所不同,正如Jodrell所链接的线程的一个答案:“我喜欢用正则表达式解析HTML。我不会试图解析故意破坏的愚蠢的HTML。”你所说的正确的HTML是什么意思?我同意最后一部分。