作者t78923t (...)
看板java
标题[问题] 档案读取特定区块内容
时间Sun Jul 25 11:10:46 2021
我有一个档案内容部分格式大概像这样:
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的所有内容
请问有比较好的做法吗?
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 150.117.35.4 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/java/M.1627182650.A.517.html
※ 编辑: t78923t (150.117.35.4 台湾), 07/25/2021 11:11:56
1F:推 jej: 正则表示法 07/25 11:59
2F:推 g30601: 把全部block当筛选条件 每行判断,遇到就往下读三行 07/25 21:50
3F:→ g30601: 如果block会不见的话,建议先找找不见的原因为何 07/25 21:50
4F:→ g30601: 或加入其他判断条件 07/25 21:50
这可能不太行 因为内容会变 不是每次都是三行
5F:→ ssccg: 你的档案是纯文字档? 缩排是真的这样? text、block、line有 07/26 11:04
6F:→ ssccg: 固定格式? 档案大小? 你现在的作法和你觉得有问题的点? 07/26 11:05
7F:→ ssccg: 解法可以包含改档案格式? 觉得你的问题不是很清楚 07/26 11:05
8F:推 kentyeh: 你的block的level是不是应该与text的level相同?如果是那 07/26 12:01
9F:→ kentyeh: 格式就是yaml,有现成的liberary可以处理 07/26 12:01
不是同level 不过是yaml没错 其实原本要用snakeyaml套件去读写
但我的maven 打包这套件一直包不进去 有想过能不能转成json
让我能直接用tag取里面的值但没找到yaml转json的相关做法
只好先当作一般文字档来读
※ 编辑: t78923t (150.117.35.4 台湾), 07/26/2021 20:05:40
※ 编辑: t78923t (150.117.35.4 台湾), 07/26/2021 20:16:21
10F:→ ssccg: 是yaml就直说啊... 比较好的方法不就是把你打包问题修好. 07/26 20:27
有试过 但一直修不好 目前是在IDE上跑可以 打包後执行就会找不到套件...
时间有限 只好先换方法做了
※ 编辑: t78923t (150.117.35.4 台湾), 07/26/2021 21:23:31
11F:→ bitlife: 用有限状态机的模式下去写,读到一行判断next state,视情 07/27 11:37
12F:→ bitlife: 况决定需要几行look ahead,把读进来的look ahead未使用时 07/27 11:38
13F:→ bitlife: 塞入阵列buffer,主程式要读取一行去一个专用函式要,该专 07/27 11:39
14F:→ bitlife: 用函式先从look ahead buffer抓,没东西才读档 07/27 11:39
15F:→ bitlife: IDE找得到,通常是先用到IDE内部的lib了,解决这点搞不好更 07/27 11:41
16F:→ bitlife: 省时 07/27 11:41
17F:推 internetms52: 早晚要解决打包问题的,毕竟不是什麽都有办法自己 08/02 13:29
18F:→ internetms52: 写,可执行jar档的包法有点不一样,印象中maven官 08/02 13:29
19F:→ internetms52: 网有范例 08/02 13:29