2012-05-03 8 views
0

私はjavaでStringTokeniserを使用してテキストファイルをトークン化しようとしています。しかし、問題はそれが行の最後の言葉だけを取ることです。少しの助けが必要です。このサンプルコードはmap-reduce関数の一部です。StringTokenizerは、行の最後の単語を取ります。

String profile; 

StringTokenizer inputKey=new StringTokenizer(value.toString()); 
while(inputKey.hasMoreTokens()){ 

    String input=inputKey.nextToken(); 
    if(!input.endsWith("</id>")){ 
     textInput.set(input); 
    } else { 
     profile=input.substring(4,15); 
     profileId.set(profile); 

    } 
} 
+2

予想される出力は何ですか? –

+0

... 'textInput'とは何ですか? –

+1

トークン化しようとしている文字列の区切り文字は何ですか?特定のものを渡さなければ、StringTokenizerはデフォルトで区切り文字として '' 'を使います。 –

答えて

2

あなたは、ほとんどが言ってきたように、デバッガを使用して、StringTokenizerはを使用してのstring.Splitを開始停止する必要があります..あなたが明示的に区切り文字を設定することができますいずれか(それは可能性があり"、"または "。")を使用するか、区切り文字と解析しようとしているStringの両方を受け入れるコンストラクタを使用してください。

+0

私は例との違いを私に説明することができます。私はtokniserを使用しなければならないので。何千もの文字列でファイルを解析する必要があります。ありがとう –

+0

+1スプリット()。 @ロヒット・ハリタッシュ、StringTokenizer javadocを調べてみましたか? "StringTokenizerは互換性のために残されたレガシークラスですが、新しいコードでの使用は避けられますが、この機能を求める人は、Stringの分割メソッドまたはjava.util.regexパッケージを使用することをお勧めします。また、すべての入力が単一のStringオブジェクトに収まる場合は、複数の小さな文字列に分割する際に問題はありません。 – Dima

+0

ここでは正規表現を使用できません。このタスクでは、私はxmlとhtmlタグを解析することがあります。パターンは認識するのが難しいです.OK私は今これに分割を実装しようとします。ありがとう –

0

これらの種類の問題は、プログラムのデバッグ方法を学ぶのに最適です。あなたが区切り文字なしStringTokenizerはオブジェクトをインスタンス化している

関連する問題