Peter Pan: Trim

Hi,

gibt es in Javascript den Befehl TRIM?
Ich habe ein bissel gegoogelt und Scripte gefunden wo es verwendet wird. Aber bei mir mag er den Befehl nicht.
Bekomme immer einen Fehler.

Beispiel:

var a="     Start   ";
var b;
alert(a);
b = trim(a);  <---- Hier bekomme ich den Fehler...
alert(b);

Danke im Vorraus.

Gurss Peter

  1. Hallo,

    die Funktion trim() gibt es meines Wissens nicht in JavaScript, also mußt du sie dir selberschreiben:

    function trim(s) {
      while (s.substring(0,1) == ' ') {
        s = s.substring(1,s.length);
      }
      while (s.substring(s.length-1,s.length) == ' ') {
        s = s.substring(0,s.length-1);
      }
      return s;
    }

    Grüsse,
    murkser

    1. Ok, super. Dank dir.

    2.    hallo Ihr Beiden,

         das ganze laesst sich auch als richtige methode fuer
         javascript-"String"-objekte umsetzen. wenn man dann
         noch regulaere ausdruecke verwendet, gelingt es einem
         einzeiler, tatsaechlich _alle_moeglichen_ leerzeichen aus
         einem string zu entfernen.

         und hier nochmal ein link zu meinereinigem ausfuehrlichen
         loesungsweg zu diesem problem, der am 27. 04. 2005 im
         forum irgendwie untergegangen schien:

         http://forum.de.selfhtml.org/archiv/2005/4/t106433/#m659975

         so long - peterS. - pseliger@gmx.net

      --
      "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
      Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford

      ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]

      1. Hi,

        dein Script ist echt gut aber es gibt ein Problem wenn ein Feld leer ist.

        Wenn ich z.B.:

        var a = document.getElementsByName("xxx")[0].value.basicTrim;

        benutze und das Feld leer ist, dann bekomme ich immer undefined zurück geliefert. Dies müsste vielleicht noch abgefangen werden.

        Sonst aber spitze.

        Gruss Peter

        1.    gruss Peter Pan,

          ... es gibt ein Problem wenn ein Feld leer ist.

          Wenn ich z.B.:

             <spitzfindig>

            var a = document.getElementsByName("xxx")[0].value.basicTrim;

               --------------------------------------------------^^^^^^
               ohne den call-operator "()" referenzierst DU die funktion nur.
             </spitzfindig>

             Du hast die methode aber vermutlich mit den klammern aufgerufen,
             da Du schreibst, dass diese "undefined" zurueckgibt - nun diesen
             wert erhaelst Du, weil in Deinem fall mit hundertprozentiger
             sicherheit davon auszugehen ist, dass schon der Wert aus

             document.getElementsByName("xxx")[0].value

             nicht korrekt ist.

          Dies müsste vielleicht noch abgefangen werden.

             glaub mir, das ist genau richtig, so wie es da steht ;-)

          Sonst aber spitze.

             das ist nur der einstieg in javascript.

             by(t)e by(t)e - peterS. - pseliger@gmx.net

          --
          "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
          Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford

          ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]

          1. Hi,

               das ist nur der einstieg in javascript.

            Wobei mir da Murksers Variante deutlich besser gefällt, da sie keinerlei spezielle JS-Version voraussetzt.

            Und bei einer solch grundlegenden Funktion, ist das IMHO absolut angebracht - und ja auch kein Overkill. ;-) Ich selbst verwende eine ähnliche Variante.

            Gruß, Cybaer

            --
            Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!

            1.    hallo Cybaer,

              Wobei mir da Murksers Variante deutlich besser gefällt, da sie keinerlei
              spezielle JS-Version voraussetzt.

              Und bei einer solch grundlegenden Funktion, ist das IMHO absolut
              angebracht - und ja auch kein Overkill. ;-) Ich selbst verwende
              eine ähnliche Variante.

                 ich stimme Dir vollkommen zu.

                 wenn ich dieses beispiel ab und an mal auspacke, sehe ich mich ja auch
                 mehr als *boeser dealer*, der hilfsbereit und voellig uneigennuetzig eine
                 fertige loesung des problems feilbietet, dabei aber hofft, das einige der
                 noch ahnungslosen opfer einem schoenen javascript-flash erliegen.

                 trim-methoden mit regulaeren ausdruecken umgesetzt als string-prototypen
                 sind ganz gut zum kostenlosen anfixen geeignet, denke ich ;-)

                 so long - peterS. - pseliger@gmx.net

              --
              "Because objects in JavaScript are so flexible, you will want to think differently about class hierarchies.
              Deep hierarchies are inappropriate. Shallow hierarchies are efficient and expressive." - Douglas Crockford

              ie:( fl:) br:> va:( ls:& fo:) rl:| n3;} n4:} ss:} de:µ js:} mo:? zu:]

              1. Hi,

                   trim-methoden mit regulaeren ausdruecken umgesetzt als string-prototypen
                   sind ganz gut zum kostenlosen anfixen geeignet, denke ich ;-)

                ROTFL. :))

                Gruß, Cybaer

                --
                Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!

  2. Hallo Peter,

    gibt es in Javascript den Befehl TRIM?

    Anscheinend nicht, d.h. man muß das selbst programmieren. Wirklich schwer isses nicht. Hier mal eine dahingehauene (=ungetestete) Lösung mit einem Regulären Ausdruck:

    string = string.replace(/^\s*(S)\s*$/, '$1);

    Tim