Supportnet Computer
Planet of Tech

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.
*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!

Antwort 4 von rfb

mit diesem Wissen (A3) kann dein Codegetüm verkürzt werden zu:

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
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.

Zitat:
Und, soweit ich weiß, ist es ja nicht möglich, ein folgendes Konstrukt aufzubauen:
doch, ist es.

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.


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.


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. :-)

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: