[問題] 檔案讀取特定區塊內容

作者: 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