WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

Antwort
 
Themen-Optionen Ansicht
Alt 27.06.2002, 10:07   #1
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard StringTokenizer in java

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
it00x30 ist offline   Mit Zitat antworten
Alt 27.06.2002, 12:23   #2
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

mit StringTokenizer können nur einzelne zeichen als delimiter verwendet werden.

ich würde das ganze mit einem StreamTokenizer lösen.
Gonte ist offline   Mit Zitat antworten
Alt 27.06.2002, 17:32   #3
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard

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
it00x30 ist offline   Mit Zitat antworten
Alt 28.06.2002, 10:25   #4
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

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();
    }	
}
das lässt sich sicher leistungsmässig noch tunen. is nur ein spontaner vorschlag. vielleicht kannst ja was damit anfangen.
Gonte ist offline   Mit Zitat antworten
Alt 28.06.2002, 11:33   #5
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

kleiner nachtrag, womits einfacher geht, wenn du jdk 1.4 hast:

http://www.galileocomputing.de/openb...va-04.htm#t317
Gonte ist offline   Mit Zitat antworten
Alt 28.06.2002, 13:12   #6
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard

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 ;-) )
it00x30 ist offline   Mit Zitat antworten
Alt 28.06.2002, 13:24   #7
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

funktionieren soll es auch noch?? was für ansprüche
Gonte ist offline   Mit Zitat antworten
Alt 29.06.2002, 15:34   #8
it00x30
Veteran
 
Registriert seit: 21.07.2001
Alter: 45
Beiträge: 404


Standard

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 ;-)
it00x30 ist offline   Mit Zitat antworten
Alt 29.06.2002, 23:52   #9
Gonte
Veteran
 
Registriert seit: 15.08.2001
Alter: 50
Beiträge: 235


Standard

mit c hab ich nix (mehr) am hut. gott sei dank gibts ja java!

mit dem code kannst machen was willst ... am besten verbessern.
Gonte ist offline   Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 16:24 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag