[问题] 档案读取特定区块内容

楼主: t78923t (トースト)   2021-07-25 11:10:46
我有一个档案内容部分格式大概像这样:
text1: abc
text2: 1234
block1:
line1: 123456
line2: abcd
line3: abc/123
block2:
line1: aabbcc
line2: 0123456
line3: 123123
档案内容有其他人会写档 所以每个区块的内容及行数会变
但是每个区块内的tag名称不变 有时候某些tag那一列会不见
如果我想读出特定的区块及他的内容 像是指定block1
就读出block1底下的line1~3的所有内容
请问有比较好的做法吗?
谢谢
作者: jej (晃奶大馬桶)   2021-07-25 11:59:00
正则表示法
作者: g30601 (梅克斯)   2021-07-25 21:50:00
把全部block当筛选条件 每行判断,遇到就往下读三行如果block会不见的话,建议先找找不见的原因为何或加入其他判断条件
作者: ssccg (23)   2021-07-26 11:04:00
你的档案是纯文字档? 缩排是真的这样? text、block、line有固定格式? 档案大小? 你现在的作法和你觉得有问题的点?解法可以包含改档案格式? 觉得你的问题不是很清楚
作者: kentyeh (kent)   2021-07-26 12:01:00
你的block的level是不是应该与text的level相同?如果是那格式就是yaml,有现成的liberary可以处理
作者: ssccg (23)   2021-07-26 20:27:00
是yaml就直说啊... 比较好的方法不就是把你打包问题修好.
作者: bitlife (BIT一生)   2021-07-27 11:37:00
用有限状态机的模式下去写,读到一行判断next state,视情况决定需要几行look ahead,把读进来的look ahead未使用时塞入阵列buffer,主程式要读取一行去一个专用函式要,该专用函式先从look ahead buffer抓,没东西才读档IDE找得到,通常是先用到IDE内部的lib了,解决这点搞不好更省时
作者: internetms52 (Oaide)   2021-08-02 13:29:00
早晚要解决打包问题的,毕竟不是什么都有办法自己写,可执行jar档的包法有点不一样,印象中maven官网有范例

Links booklink

Contact Us: admin [ a t ] ucptt.com