online 1
gast (50)

/ Forum / Skripte(PHP,ASP,Perl...)

Skripte(PHP,ASP,Perl...)Skripte(PHP,ASP,Perl...)

Fragevon rabies vom 26.06.2019, 09:24 Options

Lösung

[JavaScript] Teil aus einem String löschen

Morgen...

Ich stehe vor dem banalen Problem, einen Teil aus einem String löschen zu müssen. Funktioniert dies wirklich nur über
replace()
, oder bin ich einfach zu doof, SelfHTML zu lesen?

Das Problem ist, dass sich der String zur Laufzeit verändert... von daher mag ich
replace()
umgehen. Viel mehr, ich muss es umgehen, da generische 'Ausdrücke' ja nur vom RegExp-Objekt unterstützt werden?

Gibt's nicht etwas wie:

Zeichenkette = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
Zeichenkette = Zeichenkette.delete(indexOf('D'), indexOf('R'));
// Zeichenkette == 'ABCSTUVWXYZ'


Für Ratschläge bin ich natürlich, wie immer, schon im Vorraus dankbar.

Grüße,
--rabies.


Antwort schreiben

Antwort 1 von Marvin42 vom 26.06.2019, 10:27 Options

zeichenkette = (zeichenkette.substring(0, zeichenkette.indexOf("D"))).concat(zeichenkette.substr(zeichenkette.indexOf("R")+1);

Antwort 2 von rabies vom 26.06.2019, 10:38 Options

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 vom 27.06.2019, 09:18 Options

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 vom 27.06.2019, 09:49 Options

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 vom 27.06.2019, 09:50 Options

und wenn du genau hinsiehst ist auch dies zu lang - natürlich nur ein . zur Trennung von Objekt und Methode

Antwort 6 von rabies vom 27.06.2019, 10:23 Options

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 vom 27.06.2019, 10:32 Options

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 vom 27.06.2019, 12:03 OptionsLösung

Lösung
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 vom 27.06.2019, 18:56 Options

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 vom 28.06.2019, 09:31 Options

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 vom 28.06.2019, 09:41 Options

Antwort 12 von rabies vom 28.06.2019, 10:03 Options

Danke. Ich werd mich mal einlesen.

Antwort 13 von rfb vom 28.06.2019, 12:19 Options

Antwort 14 von rabies vom 28.06.2019, 15:04 Options

... 'dies' kannte ich schon, trotzdem nochmal danke. :-)

Ähnliche Themen

javascript:void(0)
helmi2000  23.02.2007 - 341 Hits - 1 Antwort

Javascript
tomkat  08.07.2007 - 200 Hits - 2 Antworten

Novell-Client in VmWare-WKS
DirtyDiana  11.06.2008 - 143 Hits -

Hinweis

Diese Frage ist schon etwas älter, Sie können daher nicht mehr auf sie antworten. Sollte Ihre Frage noch nicht gelöst sein, stellen Sie einfach eine neue Frage im Forum..

Neue Einträge

Version: supportware 1.9.150 / 10.06.2022, Startzeit:Thu Jan 8 21:07:44 2026