S
sarschu
Gast
Hallo,
ich versuche momentan einen Tokenizer zu schreiben, der Satzzeichen aber nicht löscht oder ignoriert, sondern als eigenes Token behandelt. Dies ist aber nicht ganz so einfach, das Satzzeichen ja direkt an Wörter angeschlossen sind.
Ich möchte für den Input
'Wie geht's?'
Gerne den Output:
'
Wie
geht's
?
'
haben.
Ich habe versucht die einzelnen Buchstaben einzulesen und abzuprüfen, ob der Buchstabe ein Satzzeichen ist oder nicht. Wenn ja, wird er in eine Zeile geschrieben, wenn nein werden die Buchstaben gesammelt, bis das Wort vollständig ist, wieder zusammen gesetzt und dann gedruckt.
Das Ganze funktioniert aber leider so nicht. Hat jemand eine Idee?
Danke schon mal,
Sarah
ich versuche momentan einen Tokenizer zu schreiben, der Satzzeichen aber nicht löscht oder ignoriert, sondern als eigenes Token behandelt. Dies ist aber nicht ganz so einfach, das Satzzeichen ja direkt an Wörter angeschlossen sind.
Ich möchte für den Input
'Wie geht's?'
Gerne den Output:
'
Wie
geht's
?
'
haben.
Ich habe versucht die einzelnen Buchstaben einzulesen und abzuprüfen, ob der Buchstabe ein Satzzeichen ist oder nicht. Wenn ja, wird er in eine Zeile geschrieben, wenn nein werden die Buchstaben gesammelt, bis das Wort vollständig ist, wieder zusammen gesetzt und dann gedruckt.
Das Ganze funktioniert aber leider so nicht. Hat jemand eine Idee?
Code:
import java.util.*;
public class tokenizer{
public static void main(String[] args){
String word1 = "";
Scanner in = new Scanner(System.in);
ArrayList<String> words = new ArrayList<String>();
ArrayList<String> letters = new ArrayList<String>();
while(in.hasNext())
{
String wordWhatever = in.next();
Scanner word = new Scanner(wordWhatever);
while(word.hasNext())
{
letters.add(word.next());
}
for(int i=0; i < letters.size(); i++)
{
if(!(letters.get(i).matches("\\p{Punct}")))
word1 = word1+letters.get(i);
else if(letters.get(i).matches("\\p{Punct}"))
// System.out.println("test");
words.add(letters.get(i));
}
letters.clear();
words.add(word1);
word1="";
}
System.out.println(words.size());
for(int i=0; i< words.size(); i++)
{
System.out.println(words.get(i));
}
}
}
Danke schon mal,
Sarah