Java Anzahl Einträge in Ical Datei auslesen

furryhamster

Lt. Commander
Registriert
Okt. 2008
Beiträge
1.100
Hi,

habe ne Ical-Datei die ich als kompletten String mit Umbrüchen erhalte. Nun will ich auslesen wie viele verschiede Events enthalten sind. Mein Plan war dies anhand der Anzahl von "BEGIN:" festzumachen die am Zeilenanfang stehen. Leider scheint es mit meinem Regex nicht zu klappen. Hat einer ne bessere Idee oder sieht den Fehler?

Code:
	public int anzahlIcalEintraege(String icalString) {
		String[] splitResultIcal = icalString.split("\n");

		int i = 0;
		int anzahlElemente = 0;
		
		while (i < splitResultIcal.length) {
			System.out.println("##" + splitResultIcal[i] + "##");
			if (splitResultIcal[i].matches("^(BEGIN:)^(\\n)")) {
				System.out.println("Folgendes gefunden: " + splitResultIcal[i]);
				anzahlElemente++;
			}
			i++;
		}
		return anzahlElemente;
	}
 
Code:
public int anzahlIcalEintraege(String icalString) {

String[] splitResultIcal = icalString.split("\n");

  int anzahl = 0;

  for(String s : splitResultIcal){
    if(s.contains("BEGIN")){
      anzahl++;
    }
  }

  return anzahl;

}
 
danke für deine Rückmeldung aber ich denke das Funktioniert so nicht. Was wenn der Betreff oder der Inhalt eines Kalendereintrags "BEGIN" enthält? Dann sollte er trotzdem matchen oder?
 
Schon mal ICal4j angeschaut?
Ich weiß zwar nicht, ob du damit die Events auslesen kannst, aber ich würde das Rad nicht neu erfinden. Wenn es damit nicht geht, dann such nach einer anderen Lösung.
 
wahli schrieb:
Schon mal ICal4j angeschaut?
Ich weiß zwar nicht, ob du damit die Events auslesen kannst, aber ich würde das Rad nicht neu erfinden. Wenn es damit nicht geht, dann such nach einer anderen Lösung.

ich nutze derzeit net.fortuna.ical4j.model.Calendar weil dies von apache camel unterstützt wird. War bisher der Annahme, dass das Objekt nicht das einzelne Ausgeben der Attribute Unterstützt aber ich werde mir das jetzt noch mal genauer anschauen. Macht ja eigentlich keinen Sinn das ich nur den kompletten Kalender als String über das Objekt erhalten kann.

Falls wer ansonsten noch ne Idee hat wie ich mein eigenenes Konstrukt zum laufen bringe immer her damit.

Edit: Peinlich peinlich... mit System.out.println("anzahl: " + calendar.getComponents().size()); gehts ganz einfach... Danke das du mich dazu gebraucht hast mich nochmal mit der Klasse zu beschäftigen :)
 
Zuletzt bearbeitet:
Zuletzt bearbeitet:
Zurück
Oben