2012-04-25 57 views
0

好了,所以我在處理searchlogs使用Java類,但在某些時候,我偶然發現在日誌中棘手的部分:的Java:處理文本行

一般的日誌行看起來是這樣:

217 yahoo.com 2006-05-16 16:35:31  

第一個數字是用戶標識,後面的字符串是查詢和後面的時間標記。 到目前爲止,我設法提取用戶標識並使用.split(':')和split(' - ')來獲取時間戳的各個部分。但在日誌中進一步下跌的線的組成變得有點不愉快的 - 例如,有喜歡的線路如下:

217 - 2006-05-18 18:20:10 1 http://www.theonering.net 
1268 osteen-schatzberg.com 2006-03-21 17:55:42 1 http://www.osteen-schatzberg.com 

在第一行中,「 - 」,似乎標誌着一個空的查詢或W/e,並在最後的網址被標記爲'clickurl'。像這些線,我的想法使用split()來接收時間戳(也是查詢)去了地獄......

有沒有人有一個好主意如何解決這個問題?

在此先感謝

+0

你能不能獨立的基礎上的空白,然後分別處理殘局? (ID,查詢,日期,時間,clickurl) – 2012-04-25 17:46:59

+0

哇,我真的沒有想到這一點?我稍後再嘗試一下,看看它是如何發展的,但聽起來沒問題。據我所知,所有的部分都被空白區域 – Rickyfox 2012-04-25 17:50:09

回答

1

如果先用空格分隔字符串,該怎麼辦?示例(僞):

string = nextLineInFile; 
string[] data = (fill with nextLineInFile broken up by spaces/whitespace); 

現在data[0]保存用戶ID,保存查詢等

2

你真的應該考慮使用模式與此正則表達式匹配。

Here是一個潛在的有用的例子。

1

有沒有這樣的事情作爲一個通用的解決方案。看來,你的線條遵循

所以,你可以用空格分開的事情了,並從那裏圖案...

+0

正確分隔,這幾乎與羅斯已經評論過的一樣,我會仔細研究它。猜猜這是唯一的方法 – Rickyfox 2012-04-25 17:52:07