Das Problem ist, dass String.split einen regulären Ausdruck erwartet. Und da ist der . ein Zeichen für jedes beliebige Zeichen und daher besteht der ganze String nur aus Trennzeichen und daher wird ein leeres Array zurück gegeben.
Du könntest ein split("\\.") machen. Also vor den . ein \ - da aber \ das Escape Zeichen ist, musst Du vor das \ noch ein \ setzen, damit Du dann wirklich ein \ bekommst.
Hier muss ich .... eingreifen, der ganze String besteht aus unendlich vielen Trennzeichen, allerdings werden leere Übereinstimmungen nicht zurückgegeben.
Der String "28.02.1974" besteht aus 10 Zeichen, die für den split(".") Aufruf alle ein Trennzeichen war. Also hatte der String genau 10 Trennzeichen.
Oder meintest Du, dass "." für unendlich viele Trennzeichen stehen würde? Auch das ist nicht korrekt, denn es gibt schlicht nur eine begrenzte Anzahl an Zeichen innerhalb eines Zeichensatzes.
Aber bezüglich String.split waren wir, was die leeren Elemente anging, nicht exakt genug. Die Aussage bezüglich Leere Übereinstimmungen werden nicht zurück gegeben ist aber falsch.
Leere Übereinstimmungen werden nur am Ende entfernt. Wenn es nur leere Übereinstimmungen gibt (So wie im gegebenen Fall), dann ist das Array leer. (Aus der Doku: "Trailing empty strings are therefore not included in the resulting array.")
Hab ich doch geschrieben, da der String nur aus leeren Übereinstimmungen besteht, werden logischerweise alle Übereinstimmungen entfernt, und das split array enthält wahrscheinlich nur einen leeren String als Elem.
Hab ich doch auch geschrieben. Wahrscheinlich ein Array, mit nur einem leeren String als Elem. Wahrscheinlich heißt, könnte so sein, könnte aber auch nicht so sein. 50/50.
Aber ein leeres Array mit der Länge 0 macht schon Sinn, wenn man (im Nachhinein) überprüfen möchte, ob eins, mehrere oder keins gematcht wurde, das stimmt schon.
An der Stelle hätte ich vielleicht mal die API noch mal lesen sollen.
Ein Array mit einem Element, das null ist, ist etwas anderes als ein Array mit 0 Elementen. Und da Du wahrscheinlich geschrieben hast, war eine Präzisierung doch auch angebracht. Nichts anderes habe ich gebracht.
Die Lösung mit [.] ist auch korrekt. Der Hintergrund hier ist, dass [] eine Menge von Zeichen definiert aus der eines gewählt werden kann. In dieser Mengendefinition gibt es dann ein paar andere Bedeutungen und der . ist wirklich nur noch ein .