Günter Marchewka: reguläre Ausdrücke zur Tabellenmanipulation

Beitrag lesen

Guten Abend liebes Forum,
ich habe immer meine Probleme mit regulären Ausdrücken und habe mir deshalb folgende Aufgabe gestellt:
Auf eine Tabelle mit einer beliebigen Anzahl von Zeilen und Spalten, mit beliebigen Inhalten in den Zellen möchte ich folgende Operationen anwenden:

  • Zeilen Oben/Unten hinzufügen
  • Spalten Links/Rechts hinzufügen
  • Zeilen Oben/Unten entfernen
  • Spalten Links/Rechts entfernen
    Alles bekomme ich hin, nur unten in der Tabelle die letzte Zeile entfernen will und will mir nicht gelingen.
    Entweder kill ich die ganze Tabelle oder füge nur ein Zeichen hinzu.
    Kann mit jemand beim Denken einen Schubs geben? Ganz unten, die letzte Abfrage auf "UntenMinus" haut nicht hin.
    Hier mein bisheriges Ergebnis:
    function changeCellRange(mach)
    {
     if (!mach) alert('Fehler!\n\nWie konnte das angehen?\nDie Funktion changeCellRange wurde OHNE Übergabewert aufgerufen!\n\nDa stimmt was nicht mit der Programmierung.');

var neuCellZeile = '';
 var neuInhalt = '';
 if (mach == 'Neu')
    {
     document.all.oData.innerHTML = oDataData;
    }
 if (mach == 'LinksPlus')
    {
     neuInhalt = document.all.oData.innerHTML.replace(/<TR>/g,'<TR><TD><img src="Leer.gif"></TD>');
     neuCellZeile = aktCellZeile.replace(/<TR>/ig,'<TR><TD><img src="Leer.gif"></TD>');
     document.all.oData.innerHTML = neuInhalt;
     aktCellZeile = neuCellZeile;
    }
 if (mach == 'RechtsPlus')
    {
     neuInhalt = document.all.oData.innerHTML.replace(/</TR>/ig,'<TD><img src="Leer.gif"></TD></TR>');
     neuCellZeile = aktCellZeile.replace(/</TR>/ig,'<TD><img src="Leer.gif"></TD></TR>');
     document.all.oData.innerHTML = neuInhalt;
     aktCellZeile = neuCellZeile;
    }
 if (mach == 'ObenPlus')
    {
     neuCellZeile = aktCellZeile + '<TR>';
     neuInhalt = document.all.oData.innerHTML.replace(/<TR>/i,neuCellZeile);
     document.all.oData.innerHTML = neuInhalt;
    }
 if (mach == 'UntenPlus')
    {
     neuCellZeile = aktCellZeile + '</TABLE>';
     neuInhalt = document.all.oData.innerHTML.replace(/</TABLE>/i,neuCellZeile);
     document.all.oData.innerHTML = neuInhalt;
    }
 if (mach == 'ObenMinus')
    {
     neuInhalt = document.all.oData.innerHTML.replace(/(</TR>)/i,'#').replace(/<table[^>]*>/i,'µ').replace(/µ[^#]*#/i,'<table id=oTable cellpadding=0 cellspacing=0>');
     document.all.oData.innerHTML = neuInhalt;
    }
 if (mach == 'LinksMinus')
    {
     neuInhalt = document.all.oData.innerHTML.replace(/<TR>/ig,'#').replace(/</TD>/ig,'µ').replace(/#[^µ]*µ/ig,'<TR>').replace(/µ/ig,'</td>');
     document.all.oData.innerHTML = neuInhalt;
    }
 if (mach == 'RechtsMinus')
    {
     neuInhalt = document.all.oData.innerHTML.replace(/</TR>/ig,'#').replace(/<TD>/ig,'µ');
     neuInhalt = neuInhalt.replace(/µ.+#/ig,'</TR>');
     neuInhalt = neuInhalt.replace(/µ/ig,'<TD>');
     document.all.oData.innerHTML = neuInhalt;
    }
 if (mach == 'UntenMinus')
    {
     neuInhalt = document.all.oData.innerHTML.replace(/</TABLE>/ig,'#').replace(/<TR>/ig,'µ');
     neuInhalt = neuInhalt.replace(/(µ.+#)/i,'</TABLE>');
     neuInhalt = neuInhalt.replace(/µ/ig,'<TR>');
     document.all.oData.innerHTML = neuInhalt;
    }
 oTable.onclick = onclickCell;
 document.onclick = cancelSelect;
}
Mit dem Code für "UntenMinus" soll eine Struktur wie
<tr><td>blabla...</td><td>...</td><td>viele Zellen...</td></tr></tbody></table>
gewandelt werden in </table>

Danke für das Interesse!
Günter