Supportnet / Forum / Skripte(PHP,ASP,Perl...)
[JavaScript] Teil aus einem String löschen
Frage
Morgen...
Ich stehe vor dem banalen Problem, einen Teil aus einem String löschen zu müssen. Funktioniert dies wirklich nur über [code]replace()[/code], oder bin ich einfach zu doof, SelfHTML zu lesen?
Das Problem ist, dass sich der String zur Laufzeit verändert... von daher mag ich [code]replace()[/code] umgehen. Viel mehr, ich muss es umgehen, da generische 'Ausdrücke' ja nur vom RegExp-Objekt unterstützt werden?
Gibt's nicht etwas wie:
[code]
Zeichenkette = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
Zeichenkette = Zeichenkette.delete(indexOf('D'), indexOf('R'));
// Zeichenkette == 'ABCSTUVWXYZ'
[/code]
Für Ratschläge bin ich natürlich, wie immer, schon im Vorraus dankbar.
Grüße,
--rabies.
Antwort 1 von Marvin42
zeichenkette = (zeichenkette.substring(0, zeichenkette.indexOf("D"))).concat(zeichenkette.substr(zeichenkette.indexOf("R")+1);Antwort 2 von rabies
Und da fielen Ihm die Tomaten von den Augen...
Darauf hätte ich aber auch mal selbst kommen können.
Danke sehr, Marvin42!
--r.
Darauf hätte ich aber auch mal selbst kommen können.
*Kopf @ Tisch*Danke sehr, Marvin42!
--r.
Antwort 3 von rfb
Zitat:
replace() umgehen. Viel mehr, ich muss es umgehen, da generische 'Ausdrücke' ja nur vom RegExp-Objekt unterstützt werden?
wenn du das so gemeint hast, dass Mustererkennung und -ersatz durch replace nicht stattfinden kann - falsch!replace() umgehen. Viel mehr, ich muss es umgehen, da generische 'Ausdrücke' ja nur vom RegExp-Objekt unterstützt werden?
Antwort 4 von rfb
mit diesem Wissen (A3) kann dein Codegetüm verkürzt werden zu:
(ersetze Zeichenfolgen beginnend mit D, endend mit R, dazwischen eine beliebige Anzahl beliebiger Zeichen, durch Nix)
Zeichenkette = Zeichenkette..replace(/D.+R/g, "");(ersetze Zeichenfolgen beginnend mit D, endend mit R, dazwischen eine beliebige Anzahl beliebiger Zeichen, durch Nix)
Antwort 5 von rfb
und wenn du genau hinsiehst ist auch dies zu lang - natürlich nur ein . zur Trennung von Objekt und Methode
Antwort 6 von rabies
Morgen,
Ja, dass das bei diesem festen Beispiel so möglich wäre, ist schon klar. Allerdings wird der String dynamisch zur Laufzeit des Scriptes verändert. Der String beginnt jeweils mit einer generierten 12stelligen Zeichenkette. Wenn ich nun sagen würde
Und, soweit ich weiß, ist es ja nicht möglich, ein folgendes Konstrukt aufzubauen:
... wenn's doch möglich sein sollte, bitte ich um Aufklärung. Andernfalls reicht mir die Lösung aus A1 auch schon, selbst, wenn Sie nicht gerade die 'kleinste' ist.
Grüße,
--r.
Ja, dass das bei diesem festen Beispiel so möglich wäre, ist schon klar. Allerdings wird der String dynamisch zur Laufzeit des Scriptes verändert. Der String beginnt jeweils mit einer generierten 12stelligen Zeichenkette. Wenn ich nun sagen würde
string.replace(/[a-zA-Z]{12}/, '') würde ich die erste beliebige Zeichenkette, die auf das Muster passt, herausschneiden. Das ist aber nicht Sinn und Zweck ... ich will eine bestimmte Zeichenkette herausschneiden. Und, soweit ich weiß, ist es ja nicht möglich, ein folgendes Konstrukt aufzubauen:
key = 'DBICAPKWCjRe';
// key ist hier dynamisch...
string = 'xxxxxxxxxxxxxxDBICAPKWCjRexxxxxxxxxxxxxxxx';
string = string.replace(/key/g, '');
... wenn's doch möglich sein sollte, bitte ich um Aufklärung. Andernfalls reicht mir die Lösung aus A1 auch schon, selbst, wenn Sie nicht gerade die 'kleinste' ist.
Grüße,
--r.
Antwort 7 von rfb
warum beschreibst du nicht gleich dein Problem vollständig? das tät vieles vereinfachen.
string = string.replace((new RegExp(key,"g")), "'');Antwort 8 von rfb
nun da mein Chef das Büro verlassen hat der Rest der Antwort.
Der Trick liegt in
Leider wird das in SelfHTML nicht erwähnt. Das JavaScript-Kapitel ist leider an einigen Stellen unvollständig bzw. nicht mehr aktuell, aber - soweit ich weiß - in Überarbeitung.
Dein Problem lässt sich dann wie folgt beschreiben:
oder (wenn der reguläre Ausdruck mehrmals verwendet werden soll):
Zitat:
Und, soweit ich weiß, ist es ja nicht möglich, ein folgendes Konstrukt aufzubauen:
doch, ist es.Und, soweit ich weiß, ist es ja nicht möglich, ein folgendes Konstrukt aufzubauen:
Der Trick liegt in
new RegExp(regexstring, modifiers)Leider wird das in SelfHTML nicht erwähnt. Das JavaScript-Kapitel ist leider an einigen Stellen unvollständig bzw. nicht mehr aktuell, aber - soweit ich weiß - in Überarbeitung.
Dein Problem lässt sich dann wie folgt beschreiben:
string = string.replace((new RegExp(key,"g")), "");oder (wenn der reguläre Ausdruck mehrmals verwendet werden soll):
var regulaer = new RegExp(key,"g");
string = string.replace(regulaer, "");Antwort 9 von rabies
Zitat:
warum beschreibst du nicht gleich dein Problem vollständig? das tät vieles vereinfachen.
warum beschreibst du nicht gleich dein Problem vollständig? das tät vieles vereinfachen.
Ja, schulligung, war vielleicht etwas blöd beschrieben... dass der String zur Laufzeit verändert wird, stand aber auch schon im Eingangsbeitrag...
Aber danke; dass man mit so einem Trick vorgehen kann, wusste ich nicht.
Ich dachte halt irgendwie, dass man nur entweder/oder kann. Also mit dem RegExp-Objekt arbeiten, oder halt einfach nur replace als Methode verwenden.
Antwort 10 von rabies
Zitat:
Leider wird das in SelfHTML nicht erwähnt. Das JavaScript-Kapitel ist leider an einigen Stellen unvollständig bzw. nicht mehr aktuell, aber - soweit ich weiß - in Überarbeitung.
Leider wird das in SelfHTML nicht erwähnt. Das JavaScript-Kapitel ist leider an einigen Stellen unvollständig bzw. nicht mehr aktuell, aber - soweit ich weiß - in Überarbeitung.
Hast Du denn eine gute, alternative Quelle, die Du dann nennen kannst? Oder empfiehlt sich hier doch eher Fachliteratur in Buchform?
Das mit SelfHTML kann ja noch 'was dauern; glaube ich.
Antwort 11 von rfb
Antwort 12 von rabies
Danke. Ich werd mich mal einlesen.
Antwort 13 von rfb
Antwort 14 von rabies
... 'dies' kannte ich schon, trotzdem nochmal danke. :-)

