Ich bin zurzeit an einem kleinen Projekt dran. Ich habe ein Textfile in dem meine Daten drinstehen und diese möchte ich alle einlesen und sortiert in ArrayListen speichern. Mein Problem ist das ich mir das so vorgestellt habe das vorne eine Zahl dran ist mit der man dann herausfindet was die entsprechende Zeile bedeutet. Hier ein Beispiel:
Die Zahlen benutze ich also im Klartext um herauszufinden was für ein String ich gerade vor mir habe. Mein Problem ist jetzt das ich nicht weiss wie ich die Zahl da wegbekomme, weil ich die nicht in der ArrayList speichern möchte. :autsch:
In Google finde ich nur wie ich das letzte Zeichen ändere (lenght()-1 ...), aber für das erste Zeichen finde ich nichts. Ich dachte da zuerst an die replace-Methode mit einer darauf folgenden trim-Methode, aber die geht in diesem Fall nicht, weil in einer Frage eine Zahl vorkommen kann und ich nicht möchte das die Zahlen aus der Frage verschwinden (z.B. mathematische Fragen oder auch Kapitelnamen). Ich hoffe ihr versteht mein Problem und könnt mir helfen
Edit: Mir fällt gerade auf das ich mich da durchmogeln könnte und eine Zeichenreihe nehme die 100%-ig nicht in einer meiner Fragen oder so auftaucht.
Das Vorgehen ist fragwürdig. Da würde ich die Sachen als XML oder so abspeichern. Das erspart die viel Stress. Und Java-Intern würde ich eine Datenstruktur erstellen.
Zu deiner Frage:
Java:
while(s.length()>0&&Character.isDigit(s.charAt(0))){
s = s.substring(1);}
So lange du nur einzelne Ziffern hast, ist ja alles klar (substring....), aber wenn du zwei- oder mehrstellig werden musst, brauchst du einen anderen Ansatz. (Es könnte ja auch sein dass dein "echter" String mit einer Ziffer beginnt ...)
Warum nicht mit ' ' (space) oder ',' (so a la CSV) trennen und immer beim ersten Auftreten dieses Characters splitten?
Was ich nicht ganz verstehe ist, warum du das als "unsauber" bezeichnest? Ich finde einen definierten Charater als Separator sauberer als sich auf die Anzahl Ziffern zu verlassen.
wie zuvor schon angesprochen, hängt es IMHO vom möglichen Dateiinhalt ab!
Stehen am Anfang nur einstellige Zahlen oder können es auch mehrstellige sein?
Java:
// Index des ersten Zeichens, dass KEINE Ziffer ist!int iIndex =0;for(int i =0; i < s.length(); i++){if(!Character.isDigit(s.charAt(i)){
iIndex = i;break;}}
s = s.substring( iIndex );
Kann wirklich der Textteil mit einer Ziffer beginnen?
Dann wird es deutlich aufwendiger ....
Vielen Dank! Genau das suchte ich ^^ Jedem dem ich von meinem kleinen Mini-Java-Programm erzähle fragt mich wieso ich keine DB benutze. Das Programm soll als .zip-Datei verschickt werden können und sozusagen transportabel sein. Ich möchte nicht irgendetwas installieren oder so damit mein Programm läuft.
Das Vorgehen ist fragwürdig. Da würde ich die Sachen als XML oder so abspeichern. Das erspart die viel Stress. Und Java-Intern würde ich eine Datenstruktur erstellen.
Zu deiner Frage:
Java:
while(s.length()>0&&Character.isDigit(s.charAt(0))){
s = s.substring(1);}
Das Vorgehen ist durchaus fragwürdig, aber ich habe noch nicht sehr viel Erfahrung mit Java und finde es eigentlich noch ziemlich okay, weil Textdateien nicht so grosse Ressourcenfresser sind. Kann man in XML wirklich ein Array haben? Wo ist da der Vorteil gegenüber einem Textfile?
So lange du nur einzelne Ziffern hast, ist ja alles klar (substring....), aber wenn du zwei- oder mehrstellig werden musst, brauchst du einen anderen Ansatz. (Es könnte ja auch sein dass dein "echter" String mit einer Ziffer beginnt ...)
Warum nicht mit ' ' (space) oder ',' (so a la CSV) trennen und immer beim ersten Auftreten dieses Characters splitten?
Was ich nicht ganz verstehe ist, warum du das als "unsauber" bezeichnest? Ich finde einen definierten Charater als Separator sauberer als sich auf die Anzahl Ziffern zu verlassen.
Die Problematik taucht zum Glück nicht auf da ich nur einstellige Zahlen benutze. Ich würde es unsauber gelöst finden wenn ich mittels spezieller Characters splitten würde, weil dies mehr Ressourcen verbrauchen würde (mehr Methoden, String Array etc.) im Gegensatz zum substring. Natürlich bezeichnete ich dies nur als unsauber, weil ich vermutet hatte das sich dies mittels einer einfachen Methode lösen lässt. ^^"
wie zuvor schon angesprochen, hängt es IMHO vom möglichen Dateiinhalt ab!
Stehen am Anfang nur einstellige Zahlen oder können es auch mehrstellige sein?
Java:
// Index des ersten Zeichens, dass KEINE Ziffer ist!int iIndex =0;for(int i =0; i < s.length(); i++){if(!Character.isDigit(s.charAt(i)){
iIndex = i;break;}}
s = s.substring( iIndex );
Kann wirklich der Textteil mit einer Ziffer beginnen?
Dann wird es deutlich aufwendiger ....
Vielen Dank! Genau das suchte ich ^^ Jedem dem ich von meinem kleinen Mini-Java-Programm erzähle fragt mich wieso ich keine DB benutze. Das Programm soll als .zip-Datei verschickt werden können und sozusagen transportabel sein. Ich möchte nicht irgendetwas installieren oder so damit mein Programm läuft.