0

私はhtmlの文字列を持っています。すべての段落を配列リストに分割したい。ただし、分割された段落は空であってはなりません。分割された段落には通常のテキストが含まれている必要があります。html テキストのみが含まれていて、その中に : のような通常のテキストがない場合は<htmltag>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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);
   }
}

上記のコードはすべての段落を分割できますが、上記のようにどの段落が空であるかを認識できません。

4

1 に答える 1

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("&nbsp;", "");
                if (!String.IsNullOrEmpty(str1))
                {
                    paragraphs.Add(item.ToString());
                }
            }
            catch
            {
                //This try-catch just prevent future error.
            }
        }
    }

上記のコードについて。最初に段落内のすべてのhtmlタグを削除してから、html文字列内のすべての空を置き換えていることがわかります。これは、空の段落を特定するのに役立ちます。

于 2013-03-19T04:57:42.847 に答える