在空格上拆分字符串但在HTML标记内排除

时间:2017-05-16 20:57:29

标签: c# html asp.net

我有这个解码的html字符串<div style=\"text-align:right; \">test1 <strong>test2 </strong>test3 test4 test5</div>

我需要在空格中拆分它们但不应该在html标签中拆分空格,所以我将在5中进行以下拆分。我不是一个正则表达式的人,所以我需要帮助。

<div style=\"text-align:right;\">test1

<strong>test2

</strong>test3

test4

test5</div>

编辑:我添加了</strong>并添加了另一行来提出另一个观点。

2 个答案:

答案 0 :(得分:0)

您可以根据' <''> '

进行拆分
string value = <div style=\"text - align:right; \">test1 <strong>test2 </strong>test3</div>;
string[] listHtml = Regex.Split(value, "( <)|(> )");

答案 1 :(得分:0)

这看起来有点难看但有效,可能比这更好(可能只是使用htmlagility pack):

        List<String> finalList = new List<string>();
        bool insideHtml = false;
        StringBuilder sb = new StringBuilder();
        string[] test = "<div style=\"text - align:right; \">test1 <strong>test2 </div>".Split(' ');

        foreach (string t in test)
        {
            if (t.Contains("<"))
            {
                sb.Append(" " + t);
                insideHtml = true;
                if (t.Contains(">"))
                {
                    finalList.Add(sb.ToString());
                    sb.Clear();
                    insideHtml = false;
                }
            }
            else if (t.Contains(">"))
            {
                sb.Append(" " + t);
                finalList.Add(sb.ToString());
                sb.Clear();
                insideHtml = false;
            }
            else
            {
                if (insideHtml)
                {
                    sb.Append(" " + t);
                }
                else
                {
                    finalList.Add(t);
                }
            }
        }