さて、私はこれについて別の質問をして解決しましたが、ここで私がやりたいことの簡単な説明があります: テキストファイルからテキストをトークンとして抽出できるようにしたい - たとえば、次の文を含むテキスト ファイル:
いいお店です、
私を信じてください!
これの内容を「トークン」として抽出したい - たとえば、1 つのトークンは「It's」、次のトークンは「 」、その次のトークンは「a」、「 」、「good」の順になります。 、「レストラン」、「、」、「\n」、「信じる」、「」、「私」、「!」の順に続きます。つまり、トークンは単語であるか、単語ではないかのいずれかであるというのが 1 つの言い方だと思います。
これまでの私のコードは次のとおりです。
/**
* Returns the next token, or throws a NoSuchElementException if none remain.
*/
public Token next() {
if (c == -1) {
throw new NoSuchElementException();
}
Writer sw=new CharArrayWriter();
boolean trf=false;
try {
while ( c != -1 && isWordCharacter(c) ) {
sw.write(c);
c = r.read();
trf=true;
}
while ( c != -1 && !isWordCharacter(c)) {
if (Character.isWhitespace(c)&&!(trf==true)){
sw.write(c);
c=r.read();
}
else if (Character.isWhitespace(c)&&(trf==true)){
c=r.read();
}
else{
sw.write(c);
c = r.read();
}
}
} catch (IOException e) {
c = -1;
return new Token(trf, sw.toString());
}
return new Token (trf, sw.toString());
}
問題は、空白をスキップすることです。そのため、「It's」、「」、「a」、「」、「good」などを取得する代わりに、空白を取り込まずに「It's」、「a」、「good」を取得します。トークン。誰が何が間違っているかのヒントを持っていますか? ありがとうございました!