Georg Gruber schrieb:
> RE_Parse ($line, ";([0-9,.]+);", $quote)
> $line = replace ($line, "; ;", ";"+$quote+";", true)
>
> In : 2019-01-29; ; ; ;1.992;
> Out: 2019-01-29;1.992; ;1.992;1.992;
>
> Beim ersten Durchlauf wird der mittlere fehlende Wert nicht ergänzt,
> dafür braucht es einen zweiten Scriptlauf.
>
> In : 2019-01-29;1.992; ;1.992;1.992;
> Out: 2019-01-29;1.992;1.992;1.992;1.992;
Meines Erachtens nach verhält sich replace korrekt. Das erste "; ;"
wurde gefunden und ersetzt. Das mittlere "; ;" existiert dann nicht
mehr, weil das ";" vom Anfang bereits verarbeitet wurde. Die Funktion
testet also weiter ab " ; ;1.992;" und findet dort nur noch eine weitere
zu ersetzende Zeichenkette-
Um das von Dir erwartete Ergebnis zu liefern, müßte replace rekursiv
arbeiten, also prüfen, ob nach dem Ersetzen eine Zeichenkette entstanden
ist, in der weitere Ersetzungen möglich sind. Wenn Du so etwas in der
Praxis machen willst, mußt Du das replace innerhalb einer Schleife
nutzen.
Gruß Heiko
--
Jeder Zwang ist Gift für die Seele.
Ludwig Börne