我有一串html。我想将所有段落分成数组列表。但分裂的段落应该不是空的。拆分段落应包含一些普通文本,如果它只包含html文本,并且里面没有普通文本,如:<htmltag> </htmltag>
,那么它应该被销毁或不被拆分。
这是如何在html字符串中拆分段落的示例:
System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(htmlString, @"<p>\s*(.+?)\s*</p>");
ArrayList groupCollection = new ArrayList();
while (m.Success)
{
groupCollection.Add(m.Value);
m = m.NextMatch();
}
ArrayList paragraphs = new ArrayList();
if (groupCollection.Count > 0)
{
foreach (object item in groupCollection)
{
paragraphs.Add(item);
}
}
上面的代码可以拆分所有段落但是它无法识别哪个段落是空的,就像我上面说的那样。
答案 0 :(得分:0)
我已经回答了我自己的问题。这是我自己版本的代码:
System.Text.RegularExpressions.Match m = System.Text.RegularExpressions.Regex.Match(htmlString, @"<p>\s*(.+?)\s*</p>");
ArrayList groupCollection = new ArrayList();
while (m.Success)
{
groupCollection.Add(m.Value);
m = m.NextMatch();
}
ArrayList paragraphs = new ArrayList();
if (groupCollection.Count > 0)
{
foreach (object item in groupCollection)
{
try
{
System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex("<[^>]*>");
// replace all matches with empty string
string str = rx.Replace(item.ToString(), "");
string str1 = str.Replace(" ", "");
if (!String.IsNullOrEmpty(str1))
{
paragraphs.Add(item.ToString());
}
}
catch
{
//This try-catch just prevent future error.
}
}
}
在上面的代码上。您可以看到我先删除段落中的所有html标记,然后替换html字符串中的所有空格。这将有助于我识别一个空段落。