Ich habe ein Programm geschrieben, dass eine CSV-Eingabedatei via StreamTokenizer einliest. Innerhalb dieser Eingabedatei werden Bereiche unterschieden, durch das Einfache Nennen des Bereichs. Bsp:
2.1
bla
bla
bla
2.2
dum
die
dum
würde heissen, dass in Bereich 2.1 bla,bla,bla liegen und in Bereich 2.2 dum,die,dum liegen. Soweit funktioniert auch alles. Jetzt habe ich nur das Problem, dass die Benennungen der Bereiche nach dem Punkt zweistellig sein können. Dann gibt es einen Bereich 2.1 und einen Bereich 2.10, die unterschiedlich sind. Dummerweise sind 2.1 und 2.10 mathematisch identisch, der StreamTokenizer erkennt beide als Double-Value mit dem Wert 2,1. Ich habe versucht sie mit der Methode wordChar des Streamtokenizers als String erkennen zu lassen, aber der StreamTokenizer erkennt das Token trotzdem als NVAL mit 2.1.
Benutze ich die wordChars-Methode falsch? (48 ist der ASCII Wert von 0, 57 der ASCII Wert von 9, ich hatte die Methode so verstanden, dass ich damit dem StreamTokenizer angebe, dass alle Zeichen zwischen 0 und 9 Teil eines Wortes sind und somit das gesamte Token somit ein String sein muss. 46 und 47 nehm ich noch mit, da 46 = '.' und ja auch ein Punkt vorkommt). Oder gibt es eine andere Möglichkeit 2.1 und 2.10 zu unterscheiden?[/code]
2.1
bla
bla
bla
2.2
dum
die
dum
würde heissen, dass in Bereich 2.1 bla,bla,bla liegen und in Bereich 2.2 dum,die,dum liegen. Soweit funktioniert auch alles. Jetzt habe ich nur das Problem, dass die Benennungen der Bereiche nach dem Punkt zweistellig sein können. Dann gibt es einen Bereich 2.1 und einen Bereich 2.10, die unterschiedlich sind. Dummerweise sind 2.1 und 2.10 mathematisch identisch, der StreamTokenizer erkennt beide als Double-Value mit dem Wert 2,1. Ich habe versucht sie mit der Methode wordChar des Streamtokenizers als String erkennen zu lassen, aber der StreamTokenizer erkennt das Token trotzdem als NVAL mit 2.1.
Code:
stto.nextToken();
stto.wordChars(46,57);
Benutze ich die wordChars-Methode falsch? (48 ist der ASCII Wert von 0, 57 der ASCII Wert von 9, ich hatte die Methode so verstanden, dass ich damit dem StreamTokenizer angebe, dass alle Zeichen zwischen 0 und 9 Teil eines Wortes sind und somit das gesamte Token somit ein String sein muss. 46 und 47 nehm ich noch mit, da 46 = '.' und ja auch ein Punkt vorkommt). Oder gibt es eine andere Möglichkeit 2.1 und 2.10 zu unterscheiden?[/code]