![]() |
![]() |
|
![]() |
![]() |
|
Programmierung Rat & Tat für Programmierer |
![]() |
|
Themen-Optionen | Ansicht |
![]() |
#1 |
Veteran
![]() Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404
|
![]() hi fachmänner und fachfrauen,
hab ein kleines problem: ich lese ein ganzes file ein, dessen einträge ich nacher in objekte "umwandeln" muss. dazu lese ich zuerst das ganze file in einen string, und dann sollte ich die einzelnen teile mittels stringtokenizer trennen um den konstruktor aufrufen zu können. es hat sich zufällig ergeben, dass im eingelesenen string nach jedem eintrag ein "null" steht, der mir bekannte stringtokenizer aber nur einzelne zeichen als trennung zulässt. wie bekomme ich ihn dazu mir das ganze wort "null" als token-grenze zu definieren und nicht jedes n, u oder l thanks for your help, tobi ps: falls es jemanden interessiert - es soll ein Verwaltungstool für BibTex-Datenbanken werden |
![]() |
![]() |
![]() |
#2 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() mit StringTokenizer können nur einzelne zeichen als delimiter verwendet werden.
ich würde das ganze mit einem StreamTokenizer lösen. |
![]() |
![]() |
![]() |
#3 |
Veteran
![]() Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404
|
![]() hab mir gerade die doku zu streamtokenizer angesehen, dabei stellt sich für mich die frage, wie ich dem meine delimiter angebe - vielleicht bin ich blind aber ich find weder einen konstruktor, der das kann, noch eine funktion
|
![]() |
![]() |
![]() |
#4 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() jo, sorry. ich hab das zuerst falsch verstanden (lesen ist eines, verstehen etwas anderes
![]() wenn ich das problem jetzt richtig aufgefasst habe, ist mir keine klasse bekannt, die das leistet. allerdings ist so eine klasse ja recht schnell entworfen. z.b. Code:
public class StringDelimiterTokenizer implements Enumeration { private String delimiter; private String str; private int currentPosition; private int maxPosition; public StringDelimiterTokenizer(String string, String delimiter) { this.str=string; this.delimiter=delimiter; this.currentPosition=0; this.maxPosition=string.length(); } public boolean hasMoreTokens() { return (currentPosition==maxPosition ? false : true); } public boolean hasMoreElements() { return hasMoreTokens(); } public String nextToken() { int pos; if((pos=str.indexOf(delimiter, currentPosition))==-1) { int temp=currentPosition; currentPosition=maxPosition; return str.substring(temp).trim(); } else { String sub=str.substring(currentPosition, str.indexOf(delimiter, currentPosition)); currentPosition=pos+delimiter.length(); if(currentPosition>=maxPosition) currentPosition=maxPosition; return sub.trim(); } } public Object nextElement() { return nextToken(); } } |
![]() |
![]() |
![]() |
#5 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() kleiner nachtrag, womits einfacher geht, wenn du jdk 1.4 hast:
http://www.galileocomputing.de/openb...va-04.htm#t317 |
![]() |
![]() |
![]() |
#6 |
Veteran
![]() Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404
|
![]() danke für den code - hab mir schon gedacht, dass ich da selber was schreiben muss - schauma mal, wie ich die klasse übernehmen kann (bzw. ob sie funktioniert ;-) )
|
![]() |
![]() |
![]() |
#7 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() funktionieren soll es auch noch?? was für ansprüche
![]() |
![]() |
![]() |
![]() |
#8 |
Veteran
![]() Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404
|
![]() waren eh nicht zu hoch gesteckt, funktionerte auf anhieb ...
du kommst wohl ein wenig von der c-seite, deinem stil nach zu schliessen. ich wollte fragen, ob ich die klasse als open-source betrachten kann - nicht dass mein kleines projekt ein welterfolg wird und die softwareindustrie grundlegend verändert und ich mich dann mit copyright-klagen herumärgern muss ;-) |
![]() |
![]() |
![]() |
#9 |
Veteran
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235
|
![]() mit c hab ich nix (mehr) am hut. gott sei dank gibts ja java!
![]() mit dem code kannst machen was willst ... am besten verbessern. ![]() |
![]() |
![]() |
![]() |
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
|
|