Hi nochmals,
ich hatte auf meinem Rechner folgenden Code seit längerem gespeichert. Keine Ahnung woher und für was für einen Zweck ich das gespeichert hatte. Aber irgendwie checke ich nicht genau, was es vor hat oder wofür das gut sein soll.
Jemand vielleicht nen Tipp? (Versuche zurzeit einwenig zu lernen und zu begreifen, nimmt mir hoffentlich die evtl. dumme Frage nicht übel
[Menu]
0=Datei
1=Einstellungen
2=?
[File]
0=Öffnen
1=Beenden
Es existiert also eine Art Kategorie, gefolgt von Unterpunkten. Ich lese nun als jede Zeile ein und bearbeite diese, sofern sie in das Kategorie- oder Unterpunktmuster passt und steck sie in eine Hashtable. Das sieht dann "bildlich" so aus:
ht = [[Menu, [0, Datei]
[1,Einstellungen]
[2,?]],
[File, [0, Öffnen]
[1,Beenden]]
]
Da die Indizes nicht in folge kommen müssen oder nicht Null am Anfang sind, stecken auch die Unterpunkte in so einer Tabelle, sodass ich einen Eintrag über die beiden Schlüssel bekomme.
String category = null;
Hashtable<Integer, String> entries = new Hashtable<Integer, String>();
while ((line = br.readLine()) != null) {
if (line.trim().length() != 0) {
if (line.matches("\[(.+?)\]")) {
if (category != null && category.length() > 0 && !this.ht.containsKey(category) && entries.size() > 0) {
this.ht.put(category, entries);
entries = new Hashtable<Integer, String>();
}
category = line.replaceAll("\[(.+?)\]", "$1");
}
else if (line.matches("^([0-9]+)=(.+)")) {
entries.put(Integer.parseInt(line.replaceAll("^([0-9]+)=(.+)", "$1")), line.replaceAll("^([0-9]+)=(.+)", "$2"));
}
}
}
if (category != null && category.length() > 0 && !this.ht.containsKey(category) && entries.size() > 0)
this.ht.put(category, entries);
Hastable erzeugen und so ist alles klar. die line-matches habe ich noch nicht ganz verstanden und generell für was dieser Code gut sein könnte
grüße