这个算法应该如何实践

这个算法..唉.老了 始终没头绪
格式如下.
[1](b).........[1.3](i)
[1(1)](b).........[1(1).3](i)
[1(n)](b).........[1(n).3](i)

每个节点都是[1(n)]开始 [1.3](i) 结束 注意第一个节点是 [1](b) 开始


如何取出每个节点的 
[1.1](b)
[1.2.2](i)
[1.2.4](i)
[1.2.5](i)
[1.2.6](i)
[1.2.7.1](i)
[1.2.7.3](b)
他们后面的值?和最后节点 [4](i) 的值
正则?NET 还是有算法

 

[1](b):
  [1.1](b):WebcastGiftMessage
  [1.2](b):
    [1.2.1](b):
        [1.2.1.1](b):WebcastGiftMessage
        [1.2.1.2](i):6968476101089774350
        [1.2.1.3](i):6968406901604289317
        [1.2.1.4](i):1622474889761
        [1.2.1.6](i):1
        [1.2.1.11](i):31000
    [1.2.2](i):685
    [1.2.4](i):1
    [1.2.5](i):1
    [1.2.6](i):1
    [1.2.7](b):
        [1.2.7.1](i):51864455568
        [1.2.7.2](i):2323788824
        [1.2.7.3](b):?南屿爱憨皮儿?
        [1.2.7.4](i):2
        [1.2.21.5](i):1
  [1.3](i):6968476101089774350

[1(1)](b):
  [1(1).1](b):WebcastGiftMessage
  [1(1).2](b):
    [1(1).2.1](b):
        [1(1).2.1.1](b):WebcastGiftMessage
        [1(1).2.1.2](i):6968476101089774350
        [1(1).2.1.3](i):6968406901604289317
        [1(1).2.1.4](i):1622474889761
        [1(1).2.1.6](i):1
        [1(1).2.1.11](i):31000
    [1(1).2.2](i):685
    [1(1).2.4](i):1
    [1(1).2.5](i):1
    [1(1).2.6](i):1
    [1(1).2.7](b):
        [1(1).2.7.1](i):51864455568
        [1(1).2.7.2](i):2323788824
        [1(1).2.7.3](b):?南屿爱憨皮儿?
        [1(1).2.7.4](i):2
        [1(1).2.21.5](i):1
  [1(1).3](i):6968476101089774350
[1(2)](b):
  [1(2).1](b):WebcastGiftMessage
  [1(2).2](b):
    [1(2).2.1](b):
        [1(2).2.1.1](b):WebcastGiftMessage
        [1(2).2.1.2](i):6968476101089774350
        [1(2).2.1.3](i):6968406901604289317
        [1(2).2.1.4](i):1622474889761
        [1(2).2.1.6](i):1
        [1(2).2.1.11](i):31000
    [1(2).2.2](i):685
    [1(2).2.4](i):1
    [1(2).2.5](i):1
    [1(2).2.6](i):1
    [1(2).2.7](b):
        [1(2).2.7.1](i):51864455568
        [1(2).2.7.2](i):2323788824
        [1(2).2.7.3](b):?南屿爱憨皮儿?
        [1(2).2.7.4](i):2
        [1(2).2.21.5](i):1
  [1(2).3](i):6968476101089774350

这里是很多节点.最后结束如下
 
[2](b):1622474890485_6968476591131305346_1_1
[3](i):1000
[4](i):1622474890485
[5](b):fetch_time:1622474890485|start_time:0|fetch_id:6968476586836338034|flag:0|seq:17744|next_cursor:1622474890485_6968476591131305346_1_1|door:1-n3

 

你这个是什么格式的?看着不像是json啊,如果是纯文本,那就用正则来获取吧

根据你的题目推测,你想获取所有:后边有值的项,对吧

MatchCollection mc = new Regex(@"(?<=(?:^|[\r\n])\s*(?!\s))([^:]+):([^\r\n]+)",RegexOptions.IgnoreCase).Matches(文本);

 

这个就是上边正则提取出来的内容了,一共55项

    [1(1).2.7](b):
        [1(1).2.7.1](i):51864455568
        [1(1).2.7.2](i):2323788824
        [1(1).2.7.3](b):?南屿爱憨皮儿?
        [1(1).2.7.4](i):2
        [1(1).2.21.5](i):1
  [1(1).3](i):6968476101089774350

你这里的数据也不是很规范,一堆2.7之中跑出个2.21,所以不能用正则提取,然后根据前边的节点数据进行匹配了

只能逐行去读的方式,来组织数据了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632