如何从HTML文件中删除评论?
他们可能只占用一行,但我确信我会遇到评论可能跨越多行的情况:
<!-- Single line comment. -->
<!-- Multi-
ple line comment.
Lots '""' ' " ` ~ |}{556 of !@#$%^&*()) lines
in
this
comme-
nt! -->
答案 0 :(得分:14)
您可以使用Html Agility Pack .NET库。这篇文章解释了如何在SO上使用它:How to use HTML Agility pack
这是删除评论的C#代码:
HtmlDocument doc = new HtmlDocument();
doc.Load("yourFile.htm");
// get all comment nodes using XPATH
foreach (HtmlNode comment in doc.DocumentNode.SelectNodes("//comment()"))
{
comment.ParentNode.RemoveChild(comment);
}
doc.Save(Console.Out); // displays doc w/o comments on console
答案 1 :(得分:4)
这个带有微小调整的功能应该有效: -
private string RemoveHTMLComments(string input)
{
string output = string.Empty;
string[] temp = System.Text.RegularExpressions.Regex.Split(input, "<!--");
foreach (string s in temp)
{
string str = string.Empty;
if (!s.Contains("-->"))
{
str = s;
}
else
{
str = s.Substring(s.IndexOf("-->") + 3);
}
if (str.Trim() != string.Empty)
{
output = output + str.Trim();
}
}
return output;
}
不确定它是否是最佳解决方案......
答案 2 :(得分:3)
不是最好的解决方案,而是一个简单的通过算法。应该做的伎俩
List<string> output = new List<string>();
bool flag = true;
foreach ( string line in System.IO.File.ReadAllLines( "MyFile.html" )) {
int index = line.IndexOf( "<!--" );
if ( index > 0 )) {
output.Add( line.Substring( 0, index ));
flag = false;
}
if ( flag ) {
output.Add( line );
}
if ( line.Contains( "-->" )) {
output.Add( line.Substring( line.IndexOf( "-->" ) + 3 ));
flag = true;
}
}
System.IO.File.WriteAllLines( "MyOutput.html", output );