看板 java 關於我們 聯絡資訊
我有一個檔案內容部分格式大概像這樣: 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://www.ptt.cc/bbs/java/M.1627182650.A.517.html ※ 編輯: t78923t (150.117.35.4 臺灣), 07/25/2021 11:11:56
jej: 正則表示法 07/25 11:59
g30601: 把全部block當篩選條件 每行判斷,遇到就往下讀三行 07/25 21:50
g30601: 如果block會不見的話,建議先找找不見的原因為何 07/25 21:50
g30601: 或加入其他判斷條件 07/25 21:50
這可能不太行 因為內容會變 不是每次都是三行
ssccg: 你的檔案是純文字檔? 縮排是真的這樣? text、block、line有 07/26 11:04
ssccg: 固定格式? 檔案大小? 你現在的作法和你覺得有問題的點? 07/26 11:05
ssccg: 解法可以包含改檔案格式? 覺得你的問題不是很清楚 07/26 11:05
kentyeh: 你的block的level是不是應該與text的level相同?如果是那 07/26 12:01
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
ssccg: 是yaml就直說啊... 比較好的方法不就是把你打包問題修好. 07/26 20:27
有試過 但一直修不好 目前是在IDE上跑可以 打包後執行就會找不到套件... 時間有限 只好先換方法做了 ※ 編輯: t78923t (150.117.35.4 臺灣), 07/26/2021 21:23:31
bitlife: 用有限狀態機的模式下去寫,讀到一行判斷next state,視情 07/27 11:37
bitlife: 況決定需要幾行look ahead,把讀進來的look ahead未使用時 07/27 11:38
bitlife: 塞入陣列buffer,主程式要讀取一行去一個專用函式要,該專 07/27 11:39
bitlife: 用函式先從look ahead buffer抓,沒東西才讀檔 07/27 11:39
bitlife: IDE找得到,通常是先用到IDE內部的lib了,解決這點搞不好更 07/27 11:41
bitlife: 省時 07/27 11:41
internetms52: 早晚要解決打包問題的,畢竟不是什麼都有辦法自己 08/02 13:29
internetms52: 寫,可執行jar檔的包法有點不一樣,印象中maven官 08/02 13:29
internetms52: 網有範例 08/02 13:29