gondor: replace-Problem

Hallo!

Ich habe nun lange eine geeignete Lösung gesucht, doch komme ich nicht ganz weiter. Alles was ich möchte, ist bestimmte Zahlen aus einem String zu entfernen.

var Satz = 53,56,87,92

for(var i in obj.selected){
  var Satz = Satz.replace(i, "");
}

Mein Problem ist es den String zum Schluss 'sauber' auszugeben.

Lösche ich die 87 soll das Resultat --> 53,56,92 sein und nicht 53,56,,92. Genauso, wenn ich die 53 lösche --> 56,87,92 und nicht ,,56,87,92 oder wenn ich alle Zahlen lösche bekomme ich ,,,. Wer kann mir bei meinem Problem behilflich sein?

Danke,

gondor(..)

  1. hi,

    var Satz = 53,56,87,92

    for(var i in obj.selected){
      var Satz = Satz.replace(i, "");
    }

    Mein Problem ist es den String zum Schluss 'sauber' auszugeben.

    Lösche ich die 87 soll das Resultat --> 53,56,92 sein und nicht 53,56,,92. Genauso, wenn ich die 53 lösche --> 56,87,92 und nicht ,,56,87,92 oder wenn ich alle Zahlen lösche bekomme ich ,,,.

    Vielleicht nicht "Zahl", sondern "Zahl," entfernen?
    Lediglich bei der letzten problematisch - die hat kein nachfolgendes Komma. Aber dafür könnte man zunächst eins an den String dranhängen, und nachher wieder entfernen.

    Trotzdem, unschöne Bastelei.
    Schöner: Mit split ein Array draus machen, unerwünschte Zahlen mit splice aus diesem entfernen, und dann mittels Array.join wieder zu einem String mit Trennzeichen zusammenfügen.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. ;-)

      danke.

      2 lösung funktioniert prima.

      gondor(..)

  2. Liebe(r) gondor,

    var Satz = 53,56,87,92

    das sollte einen Syntax-Fehler erzeugen...

    var Satz = Satz.replace(i, "");

    Das gibt auch Probleme, denn Du hast die Variablen Satz bereits initiiert, sodass das "var" entfallen muss. Desweiteren erwartet replace() als erstes Argument ein reguläres Muster, Du gibst aber nur einen Zahlenwert an. So wird das nix!

    Lösche ich die 87 soll das Resultat --> 53,56,92 sein und nicht 53,56,,92. Genauso, wenn ich die 53 lösche --> 56,87,92 und nicht ,,56,87,92 oder wenn ich alle Zahlen lösche bekomme ich ,,,.

    Lerne etwas über reguläre Suchmuster! Dann kannst Du Dein Problem selbst lösen. Es gibt in SELFHTML an mehreren Stellen Erläuterungen zur Funktionsweise regulärer Ausdrücke. Am besten Du suchst einmal danach. Sowohl im Javascript-Kapitel, als auch im Perl-Bereich solltest Du eine ausführliche Einführung in diese Thematik finden!

    Komme wieder, wenn Du ein erstes Suchmuster gebastelt hast und es noch immer nicht funktionieren will!

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    --
    ie:% br:> fl:| va:) ls:[ fo:) rl:° n4:? de:> ss:| ch:? js:) mo:} zu:)
    1. hi,

      Desweiteren erwartet replace() als erstes Argument ein reguläres Muster,

      Doch, replace kann auch nach fixen Textliteralen suchen und diese ersetzen - ab JavaScript 1.3 jedenfalls, vorher noch nicht.http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Global_Objects:String:replace#Syntax

      Du gibst aber nur einen Zahlenwert an.

      Die Zahl wird in diesem Falle automatisch in String konvertiert.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }