0

好的,所以我正在使用 java 类处理搜索日志,但在某些时候,我偶然发现了日志中的一个棘手部分:

通常,日志行如下所示:

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

第一个数字是用户 ID,之后的字符串是查询,之后是时间戳。到目前为止一切顺利,我设法提取了用​​户 ID 并使用 .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,最后的 url 标记为“clickurl”。有了这样的行,我使用 split() 来接收时间戳(以及查询)的想法就变成了地狱......

有谁知道如何解决这个问题?

提前致谢

4

3 回答 3

2

您应该在这里真正考虑使用带有正则表达式的模式匹配。

是一个可能有用的例子。

于 2012-04-25T17:48:34.790 回答
1

如果先用空格分割字符串怎么办?示例(伪代码):

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

现在data[0]保存用户 ID,data[1]保存查询等。

于 2012-04-25T17:48:20.050 回答
1

没有通用的解决方案。看来您的线条遵循以下模式

所以你可以用空格分割东西,然后从那里开始......

于 2012-04-25T17:51:03.427 回答