Ich versuche JavaScript zu verwenden, um Inhalt in geschweiften Klammern dynamisch zu ersetzen. Hier ist ein Beispiel meines Codes:
%Vor%Der obige Code sollte ausgeben "Dies ist Johns einfacher String in JavaScript! Ja, ein String!".
Folgendes passiert:
Allerdings habe ich kein Glück, zumal ein Wert an mehreren Stellen ersetzt werden kann und ich einen dynamischen Wert innerhalb des regulären Ausdrucks habe.
Kann mir jemand helfen, dies zu beheben, indem ich ein ähnliches Setup wie oben verwende?
Hier ist eine Funktion, die die Zeichenfolge und ein Array von Ersetzungen verwendet. Es ist flexibel genug, um wiederverwendet zu werden. Der einzige Haken ist, dass Sie Zahlen in Ihrer Zeichenfolge anstelle von Zeichenfolgen verwenden müssen. z.B.
%Vor%Demo: Ссылка
Strings in JavaScript sind unveränderbar. Es bedeutet, dass dies niemals so funktioniert, wie Sie es erwarten:
%Vor% Dies ist nicht nur ein Problem mit .replace()
- nichts kann eine Zeichenfolge in JavaScript verändern. Was Sie stattdessen tun können, ist:
Literale für reguläre Ausdrücke in JavaScript interpolieren keine Werte, so dass dies immer noch nicht funktioniert:
%Vor%Sie müssen stattdessen Folgendes tun:
%Vor%Aber das ist ein bisschen unordentlich, so dass Sie zuerst eine Liste von Regexes erstellen können:
%Vor% Wie Sie sehen, können Sie auch i < replaceArray.length
anstelle von i <= replaceArray.length - 1
verwenden, um Ihre Schleifenbedingung zu vereinfachen.
Jetzt können Sie es noch einfacher machen:
%Vor% Anstatt die Funktion .replace()
immer wieder zu durchlaufen und anzuwenden, können Sie dies nur einmal tun:
Siehe DEMO .
Sie erstellen im Grunde Ihre eigene Template-Engine. Wenn Sie stattdessen eine fertige Lösung verwenden möchten, sollten Sie Folgendes in Betracht ziehen:
oder so ähnlich.
Ein Beispiel für das, was Sie mit Moustache versuchen möchten, wäre:
%Vor%Siehe DEMO .
Tags und Links javascript replace match dynamic-variables curly-braces