Okay, ich habe eine andere Frage dazu gestellt, die ich inzwischen gelöst habe, aber hier ist eine kurze Erklärung dessen, was ich tun möchte: Ich möchte Text aus Textdateien als Token extrahieren - sagen wir mal ich habe eine Textdatei, die den Satz enthält:Token überspringen Whitespace?
Es ist ein gutes Restaurant,
glauben Sie mir!
Ich möchte den Inhalt von diesem als "Tokens" extrahieren - zum Beispiel wäre ein Token "It's", der nächste Token wäre "", der nächste wäre "a", dann "", dann "gut", dann "Restaurant", dann "," und "\ n", dann "glauben", "", "mich", "!". Also denke ich, dass Token entweder Wörter oder keine Wörter sind.
Hier ist mein Code so weit:
/**
* 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());
}
Das Problem ist, dass ich Leerzeichen überspringen, so anstatt sich: "Es ist", "", "a", "", "gut" etc, ich hole "Es ist", "a", "gut", ohne den Whitespace als Token zu berücksichtigen. Hat jemand irgendwelche Tipps, was falsch ist? Vielen Dank!
Wird das Token zusammen mit dem Trennzeichen gedruckt? – noMAD
Ja, es werden auch die Trennzeichen gedruckt, probieren Sie es aus. – nikhil