ich hätte hier ein kleines Problem anzubieten, falls jemand interessiert ist

Ich versuche einen "Uptime-String" zu parsen/umzuformen, der folgendes Format hat:
Code: Alles auswählen
Dd HHh MMm SSs
Mein gewünschtes Ausgabeformat ist folgendes:
Code: Alles auswählen
D Tag(e) HHh:MMm
- 0 Tage =
Code: Alles auswählen
HHh MMm SSs
- 0 Stunden =
Code: Alles auswählen
Dd MMm SSs
- 0 MInuten =
Code: Alles auswählen
Dd HHh SSs
Meine bisherigen Versuche diese Sonderfälle abzufangen würde ich mal als EPIC FAIL

Ich poste hier ganz bewusst nicht meinen Code, weil ich befürchte, dass ich zunächst einen neuen Impuls für den Lösungsansatz brauche ...
So long und danke schon mal im Voraus für euer Feedback,
Manne.
NACHTRAG: Evtl. hat ja jemand eine "schlanke" Idee, wie ich den String zunächst mit den fehlenden Werten auffüllen könnte.
Also um z.B. aus 2d 7m 17s folgendes zu machen: 2d 0h 7m 17s ODER
aus 1d 8h 46s folgendes zu machen: 1d 8h 0m 46s
Das Ergebniss liesse sich dann in ein array "explodieren", wo ich dann "geordnete" Verhältnisse habe.
(DIe fehlenden Tage am Anfang, sowie die fehlden Sekunden am Ende sind dabei eher nicht mein Problem)