好像有个SgmlReader的东西,你可以了解一下看有没有用。
#region 闭合HTML代码
public string CloseHTML(string str)
{
string[] HtmlTag = new string[] { "ul", "font", "b", "u", "i", "a", "h1", "h2", "h3", "h4", "h5", "h6", "tr", "td", "span", "div", "table", "p" };
for (int i = 0; i < HtmlTag.Length; i++)
{
int OpenNum = 0, CloseNum = 0;
Regex re = new Regex("\\<" + HtmlTag[i] + "( [^\\<\\>]+|)\\>", RegexOptions.IgnoreCase);
MatchCollection m = re.Matches(str);
if (m != null)
{
OpenNum = m.Count;
}
re = new Regex("\\<\\/" + HtmlTag[i] + "\\>", RegexOptions.IgnoreCase);
m = re.Matches(str);
if (m != null)
{
CloseNum = m.Count;
}
for (int j = 0; j < OpenNum - CloseNum; j++)
{
str += "</" + HtmlTag[i] + ">";
}
}
return str;
}
#endregion
我这样处理的 基本标签还是行了,样式也不会有好大的变化了,但添加的结束标签的顺序还有点问题
这么智能,不大好实现吧,再说你也不知道要在哪加这个标签啊,标签是可以嵌套的奥……
我做了一个对一篇文章分页的功能 但现在出现了样式不对,分页是截取字符串那样做的,然后就出现这样的问题了?
@沅江: 这样啊!可否这样安排。
1、分页第一部分获取文章样式开始标签和结束标签,用相似性来判断是否匹对吧!不匹对就在下一个页中找到缺失结束标签,然后你的分页就在此结束标签或则此开始标签进行分页吧
2、类推……
@Rich.T:这样很麻烦 耶
@沅江: 那是不是可以考虑在提取页面做分页的地方,不要有这样的情况发生
没看懂,能说下嘛
@Rich.T: 这个是只对字符串检测有没有结束标签的 我的效果是检测到没有结束的标签就要补充上缺失的标签
@沅江:
理解了原理和代码自己还不会写吗
@Rich.T: 现在的问题是 要咋样确定缺失的标签的位置在什么地方