Joe: trim() Befehl, Abtrennen nachfolgender Leerzeichen

Hi,

ich plage mich mir Java-Script herum. Ich habe eine mehrspaltige Tabelle, sie ist mit Leerzeichen aufgefüllt, damit die Angaben untereinander stehen (da gibt es vielleicht auch eine bessere Methode).

Ich hole dann mit slice() die einzelnen Angaben über Java-Script in die Eingabefelder wenn die Selektion geändert wurde.

Problem: ich finde weder hier noch in den Archiven irgendeine Funktion zum Abtrennen nachfolgender Leerzeichen. So wie früher der trim() Befehl bei dBase oder so.

Gibt es da so was ?

Gruß Joe

  1. Hi,

    Ich habe eine mehrspaltige Tabelle, sie ist mit Leerzeichen aufgefüllt, damit die Angaben untereinander stehen (da gibt es vielleicht auch eine bessere Methode).

    ja, in der Tat. Für Darstellung ist CSS da, und es liefert diverse Angaben wie z.B. margin und padding.

    Ich hole dann mit slice() die einzelnen Angaben über Java-Script in die Eingabefelder wenn die Selektion geändert wurde.

    Dass diese Methode nicht jedem Client zur Verfügung steht, hast Du natürlich beachtet.

    Problem: ich finde weder hier noch in den Archiven irgendeine Funktion zum Abtrennen nachfolgender Leerzeichen. So wie früher der trim() Befehl bei dBase oder so.

    Gibt es da so was ?

    Regular Expressions lösen das im Handumdrehen.

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. Sorry, mit Tabelle meinte ich eine Auswahlliste mit <select>. Die Applikation läuft zwar übers Internet, die Clientsysteme liegen aber fest. Selektiert der User einen Eintrag, sollen die enthaltenen Eingaben in einzelne Eingabefelder.

      Irgendwie kann man aber in diesen Auswahlllisten nicht einmal
      Tabs setzen, brauchbare Stringbefehle gibt es in JD eigentlich auch nicht so richtig. Im Moment fülle ich die einzelnen Zeilen halt mit Blanks auf, die stören aber beim Editieren in den Eingabefeldern.

      Nur mit regular expr ? Die in den Infos enthalten Leerzeichen sollen erhalten bleiben.

      Prinzipiell müßte man nur einen Pointer ab Stringende nach Blanks schauen lassen und die weghauen. In C ist das primitiv ...

      Ich dachte halt, es gibt den Befehl irgendwo in JS und ich habe den übersehen :-)

      Danke für die Antworten, Joe

      1. Hi,

        Sorry, mit Tabelle meinte ich eine Auswahlliste mit <select>.

        äh, das ist weder eine Tabelle, noch etwas, das meine Antwort ändert.

        Die Applikation läuft zwar übers Internet, die Clientsysteme liegen aber fest.

        Bitte von Anfang an spezifizieren.

        Nur mit regular expr ?

        Nein, aber am sinnvollsten. Nun ja, abgesehen davon natürlich, die Leerzeichen gar nicht erst hinzuzufügen, weil das trivial mit CSS lösbar ist.

        Die in den Infos enthalten Leerzeichen sollen erhalten bleiben.

        Dem steht nichts entgegen.

        Prinzipiell müßte man nur einen Pointer ab Stringende nach Blanks schauen lassen und die weghauen. In C ist das primitiv ...

        In JavaScript auch, mit Regular Expressions noch mehr.

        Ich dachte halt, es gibt den Befehl irgendwo in JS und ich habe den übersehen :-)

        Nein, hast Du nicht.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. hi,

          Nun ja, abgesehen davon natürlich, die Leerzeichen gar nicht erst hinzuzufügen, weil das trivial mit CSS lösbar ist.

          nicht bei seinem modell, denke ich.
          so wie ich die beschreibung verstanden habe, hat er mehrere "spalten", die jeweils zusammengefasst innerhalb einer <option> angezeigt werden, und die geschützten leerzeichen sorgen dann hier dafür, dass die "spalten"-optik gewährleistet bleibt.

          wenn du das wirklich innerhalb der _einen_ option mit CSS trivial zu lösen vermagst, zeig mal her :-)

          ich denke aber, dass hier eher eine änderung des konzeptes bzw. der verwendeten HTML-struktur von nöten wäre.

          gruss,
          wahsaga

        2. Bitte von Anfang an spezifizieren.

          OK, fange ich mal oben an.

          Es ist ein größeres Archivierungssystem, läuft (noch) unter W2k /Apache 2 und bietet ca 20.000 Kunden einen Zugriff auf Ihre Rechnungen online, zu Beginn des Folgejahres bekommen sie den Kram auf CD. Im Archiv sind ca. 30 Mio Zettel pro Jahr, pro Tag laufen per ftp ca 200 MB an Date ein die automatisch verarbeitet werden. Die komplette Generierung der dazu notwendigen HTML-Seiten geht über's CGI, die CGIs habe ich alle in C geschrieben (Laufzeitgründe, SQL und PHP sind zu lahm bei den Datenmengen).

          Dazu gehört eine Benutzerverwaltung und ich habe einfach das Problem, daß die Übertragung von 20.000 Accounts zum Editieren halt etwas dauert (besonders wegen der vielen Leerzeichen).

          Höre ich aus Deinen Anmerkungen etwas heraus, daß man mit CSS auch Tabs in diesen selects setzen kann ? Muß ich mal probieren ...

          Besser ist wahrscheinlich eine andere Struktur und nicht so viele Daten auf einmal raushauen :-)

          Grüße an Daktari, Joe

          1. Hi,

            Höre ich aus Deinen Anmerkungen etwas heraus, daß man mit CSS auch Tabs in diesen selects setzen kann ?

            vergiss es, ich hatte Dich falsch verstanden. Ich dachte, es ginge Dir um Leerzeichen am Anfang oder Ende eines Strings, nicht irgendwo mittendrin - die wirst Du effektiv höchstens zufällig finden können.

            Das Content-Modell von <option> sieht exakt ein Element vor, nämlich #PCDATA. Damit lässt sich nur dieses eine Element per CSS formatieren. Ein "mittendrin" gibt es überhaupt nicht. Überlege Dir in erster Linie, ob Dein Strukturmodell überhaupt passend ist.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. »»Überlege Dir in erster Linie, ob Dein Strukturmodell überhaupt passend ist.

              Servus,

              es paßt wohl eher nicht. In Windows geht das relativ einfach mit den Owner-Drawn Listboxen und einer Handvoll funktionierender Stringfunktionen. Das können HTML und Javascript einfach nicht. Ich könnte entweder ein Riesenarray mit den ganzen Benutzerdaten in das HTML-Script einsetzen und damit den Browser erschlagen oder ...

              Bei diesen Konstruktionen muß ich das ja prinzipiell auf der Clientseite komplett handeln. Das ist eigentlich das Hauptproblem. Muß ich noch mal Denken gehen :-) Prost.

              Gruß Joe und nochmal Danke !

  2. hi,

    Ich habe eine mehrspaltige Tabelle, sie ist mit Leerzeichen aufgefüllt, damit die Angaben untereinander stehen (da gibt es vielleicht auch eine bessere Methode).

    bestimmt. entweder auftrennung der daten und einfügen in weitere tabellenspalten, oder gleich ausgabe mit besser geeigneten html-elementen (listen, definitionslisten, o.ä.), und formatierung per CSS.

    Problem: ich finde weder hier noch in den Archiven irgendeine Funktion zum Abtrennen nachfolgender Leerzeichen. So wie früher der trim() Befehl bei dBase oder so.

    tja, javascript ist nun mal nicht dBase ...

    schau dir unter http://selfhtml.teamone.de/javascript/objekte/string.htm die stringfunktionen an, und bastle dir daraus was geeignetes, um (geschützte) leerzeichen am ende von strings abzuschneiden.

    gruss,
    wahsaga

  3. Hi,

    Gibt es da so was ?

    function trim(text) {
     while(text.charAt(0)==" ") { text=text.substring(1,text.length); }
     while(text.charAt(text.length-1)==" ") { text=text.substring(0,text.length-1); }
     return text;
    }

    Funktioniert ab JS 1.0 (RegExpr. gibt es erst ab 1.2).

    Gruß, Cybaer

  4. Gibt es da so was ?

    jo, hab selbst gerade soetwas gesucht & nicht gefunden.
    da hab ich mir nen regexp gebastelt..

    versuchs mit:

    deinString = deinString.replace(/(^\s*)|(\s*$)/, "");

    das ist das gleiche wie in manchen anderen progr. sprachen trim(deinString)

    1. Hi,

      deinString = deinString.replace(/(^\s*)|(\s*$)/, "");

      kleiner Tipp: Geringfügig performanter ist es, hieraus zwei RegExp zu machen, anstatt sie zu verodern. Auch wenn es in aller Regel nicht bemerkenswert ist, kann das in bestimmten Fällen kriegsentscheidend sein.

      Cheatah

      --
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
  5. gruss Joe,

    das oo-konzept von javascript laesst erweiterungen von
       prototypischen objekten zu, oder einfacher: schmerzlich
       vermisste objekt-methoden darf man selber schreiben und
       ebenjenen konstruktoren mitgeben  -  in Deinen fall so:

    String.prototype.removeWhiteSpaces = function() {return(this.replace(/\s+/g,""));};

    String.prototype.leftTrim = function() {return(this.replace(/^\s+/,""));};
       String.prototype.rightTrim = function() {return(this.replace(/\s+$/,""));};
       String.prototype.basicTrim = function() {return(this.replace(/\s+$/,"").replace(/^\s+/,""));};
       String.prototype.superTrim = function() {return(this.replace(/\s+/g," ").replace(/\s+$/,"").replace(/^\s+/,""));};

    jetzt stehen jedem string-objekt, dessen scripting host
       das obige beispiel eingebunden hat, 5 neue methoden zur
       verfuegung;

    viel erfolg - peterS. - pseliger@gmx.net

    --
    sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)
    1. hallo again - korrektur:

      ...
         ebenjenen konstruktoren mitgeben  -  in Deinen fall so:

      ...
            ebenjenen konstruktoren mitgeben  -  in Deinem fall so:

      gute nacht - peterS. - pseliger@gmx.net

      --
      sh:| fo:) ch:? rl:| br:& n3:} n4:# ie:| mo:{ va:| de:[ zu:] fl:) ss:) ls:& js:)