c# 按动态字符拆分动态数组

遇到纯字符串就组成一个数组
变成
数组1=
2023070600000001600
code=“0000”
ID=“kik”
Text=“Contine”

数组2=
20230706000000011400
message=“00000IX”
ID=“joke”

数组3=
20230706000000021700
Flag=“flase”

数组4=
20230706000000032500
Flag=“true”

数组5=
20230706000000041600
userID=“”
password=“”

数组6=
20230706000000043700
Password=“”

2023070600000001600
code=0000ID=“kik”
Text=“Contine”
20230706000000011400
message=00000IX”
ID=“joke”
20230706000000021700
Flag=“flase”
20230706000000032500
Flag=“true”
20230706000000041600
userID=“”
password=“”
20230706000000043700
Password=“”

 string[] datStr = File.ReadAllLines(localFileName);//largeBytes
                var lists = new List<List<string>>();//lists
                Regex regNum = new Regex("^[0-9]");//marker
                var tmpLst = new List<string>();//tmpLst
                foreach (var datstr in datStr)
                {
                    if (Char.IsDigit(datstr[0]))
                    {
                        lists.Add(new List<string>(new List<string>(datstr);));
                        tmpLst = new List<string>();
                        lists.Add(tmpLst);
                    }
                    else
                    {
                        tmpLst.Add(datstr);
                    }
                }
                lists.Add(tmpLst);
using System;
using System.Text.RegularExpressions;
namespace HelloWorldApplication
{
   class HelloWorld
   {
      static void Main(string[] args)
      {
        string s1 = @"2023070600000001600
code=“0000”
ID=“kik”
Text=“Contine”
20230706000000011400
message=“00000IX”
ID=“joke”
20230706000000021700
Flag=“flase”
20230706000000032500
Flag=“true”
20230706000000041600
userID=“”
password=“”
20230706000000043700
Password=“”";
        string pattern = @"(?is)\d{20}.+?(?=\d{20}|$)";

        MatchCollection matches = Regex.Matches(s1, pattern);

        string[] result = new string[matches.Count];
        for (int i = 0; i < matches.Count; i++)
        {
            result[i] = matches[i].Value;
        }

        foreach (string match in result)
        {
            Console.WriteLine("找到" + match + "\n");
        }
      }
   }
}

找到20230706000000011400
message=“00000IX”
ID=“joke”

找到20230706000000021700
Flag=“flase”

找到20230706000000032500
Flag=“true”

找到20230706000000041600
userID=“”
password=“”

找到20230706000000043700
Password=“”

【以下回答由 GPT 生成】

string input = @"<p>遇到纯字符串就组成一个数组<br />变成<br />数组1&#61;<br />2023070600000001600<br />code&#61;“0000”<br />ID&#61;“kik”<br />Text&#61;“Contine”</p>
                <p>数组2&#61;<br />20230706000000011400<br />message&#61;“00000IX”<br />ID&#61;“joke”</p>
                <p>数组3&#61;<br />20230706000000021700<br />Flag&#61;“flase”</p>
                <p>数组4&#61;<br />20230706000000032500<br />Flag&#61;“true”</p>
                <p>数组5&#61;<br />20230706000000041600<br />userID&#61;“”<br />password&#61;“”</p>
                <p>数组6&#61;<br />20230706000000043700<br />Password&#61;“”</p>
                <pre><code class=""language-javascript""><span class=""hljs-number"">2023070600000001600</span>
                <span class=""hljs-attribute"">code</span><span class=""hljs-operator"">&#61;</span>“<span class=""hljs-number"">0000</span>”
                <span class=""hljs-attribute"">ID</span><span class=""hljs-operator"">&#61;</span>“kik”
                <span class=""hljs-attribute"">Text</span><span class=""hljs-operator"">&#61;</span>“Contine”
                <span class=""hljs-number"">20230706000000011400</span>
                <span class=""hljs-attribute"">message</span><span class=""hljs-operator"">&#61;</span>“<span class=""hljs-number"">00000</span>IX”
                <span class=""hljs-attribute"">ID</span><span class=""hljs-operator"">&#61;</span>“joke”
                <span class=""hljs-number"">20230706000000021700</span>
                <span class=""hljs-attribute"">Flag</span><span class=""hljs-operator"">&#61;</span>“flase”
                <span class=""hljs-number"">20230706000000032500</span>
                <span class=""hljs-attribute"">Flag</span><span class=""hljs-operator"">&#61;</span>“true”
                <span class=""hljs-number"">20230706000000041600</span>
                <span class=""hljs-attribute"">userID</span><span class=""hljs-operator"">&#61;</span>“”
                <span class=""hljs-attribute"">password</span><span class=""hljs-operator"">&#61;</span>“”
                <span class=""hljs-number"">20230706000000043700</span>
                <span class=""hljs-attribute"">Password</span><span class=""hljs-operator"">&#61;</span>“”
                </code></pre>";

List<List<string>> result = new List<List<string>>();
string[] paragraphs = input.Split(new string[] { "<p>", "</p>", "<br />", "<pre><code class=\"language-javascript\">", "</code></pre>" }, StringSplitOptions.RemoveEmptyEntries);

foreach (string paragraph in paragraphs)
{
    List<string> array = new List<string>();
    string[] lines = paragraph.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries);

    foreach (string line in lines)
    {
        if (!line.Contains("<span") && !line.Contains("</span>") && !line.Contains("<code class=\"language-javascript\">"))
        {
            array.Add(line.Replace("&#61;", "=").Replace("“", "").Replace("”", "").Trim());
        }
    }

    if (array.Count > 0)
    {
        result.Add(array);
    }
}

result;

该代码通过以下步骤将动态字符串拆分为动态数组:

  1. 首先,我们将输入字符串分割成段落,使用 <p>, </p>, <br /><pre><code class="language-javascript"></code></pre> 作为分割符。这样我们得到了一个段落的数组。

  2. 接下来,我们遍历每个段落,并将其拆分成行。这样我们得到了每个段落中的行数组。

  3. 然后,我们遍历每个行,并检查是否不包含 <span, </span>, <code class="language-javascript"></code>。如果是的话,我们把每一行加入到某个段落对应的动态数组中。

  4. 最后,我们检查一个动态数组是否不为空,如果不为空,则将其加入到结果列表中。

最后,我们获得了一个嵌套数组,每个子数组都对应一个动态字符串的拆分结果。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^