歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> 用String分析固定格式的文本

用String分析固定格式的文本

日期:2017/3/1 10:01:48   编辑:Linux編程

  前段時間做一個任務:從 log文件 中提取出 java異常(Exception)的相關信息。 log文件的每一行都有固定的格式:包括 時間戳、信息類型、信息內容 等等。

  一開始我想這是不是得用編譯原理那套工具 lex、yacc 來做?當時做大作業的時候感覺它們真的是無比強大啊!但仔細一想,覺得沒有必要:

每行文本有多項數據,每項數據都識別為一個記號(token),太麻煩了!

沒有什麼語法,每一行就是各項數據的一個組合,順序是一成不變的。

  因此我想直接用 String 的各個方法來分析算了,結果事半功倍!其中用到了如下一些方法:

split

  這是最重要的一個方法,拆分各個字段就靠它了,如:

"a b c".split(" ")
// 將得到 {"a", "b", "c"}

  分隔符是一個正則表達式:

"a,b:c".split(",|:")
// 也會得到 {"a", "b", "c"}

String 中正則表達式的格式可看: 正則表達式格式簡介,見這裡。

replaceAll

  replaceAll 是替換字符串的方法,但我用的卻是它的隱藏功能:刪除子字符串(替換為空字符串):

"abc;".replaceAll(";", "")
// 將得到 "abc"

replaceAll 的第一個參數是正則表達式。

trim

  一般用於去掉頭尾的空格:

" a bc ".trim()
// 將得到 "a bc"

indexOf 和 lastIndexOf

  這是一套用於定位字符/子字符串的重裝方法。需要注意的是 indexOf('a') 比 indexOf("a") 的效率要高,盡管它們的作用相同。

substring

  這是一套截取子字符串的重裝方法。 分析文本時可配合 indexOf 使用。

startsWith 和 endsWith 以及 contains

  判斷是否包含某字符串。

  以上各個操作也許看起來並不如何強大,但是如果組合、連接起來用,分析固定格式的文本綽綽有余!

Copyright © Linux教程網 All Rights Reserved