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

一般的な解決策のようなものはありません。あなたの線は次のパターンに従っているようです

したがって、スペースで分割してそこから移動できます...

于 2012-04-25T17:51:03.427 に答える
1

最初に文字列をスペースで分割するとどうなりますか? 例 (疑似コード):

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

data[0]ユーザーID、data[1]クエリなどを保持するようになりました。

于 2012-04-25T17:48:20.050 に答える