In meinem regulären Ausdruck habe ich versucht, alle "{" und "}" aus einer Zeichenfolge zu entfernen. Wenn Sie das Skript mit Packer / Minimizer-Skripten verschieben, werden diese unterbrochen. Deshalb möchte ich etwas über eine bessere und kompatiblere Schreibweise erfahren: mystring.replace(/\{/g,"");?

2
ledy 8 Okt. 2012 im 21:57

3 Antworten

Beste Antwort

Nach dem erneuten Lesen der Frage scheint es, als hätten Sie einen Fehler mit dem Minifier / Packer gefunden. Mein erster Vorschlag wäre, einen besseren Minimierer zu verwenden, der diese Probleme nicht aufweist. Wenn Sie jedoch nicht mit dem arbeiten, was Sie verwenden, können Sie versuchen, Unicode-Escape-Sequenz im regulären Ausdruck:

mystring.replace(/\u007b/g, '');

Alternativ können Sie String.prototype.split und Array.prototype.join:

mystring.split('{').join('');
1
zzzzBov 8 Okt. 2012 im 18:04

Sie können einfach eine Zeichenfolge anstelle eines regulären Ausdrucks verwenden. Ich bin nicht sicher, ob dies "besser" ist, aber es sollte nicht brechen, wenn es minimiert wird. Wenn Sie das minimierte Beispiel angeben, können wir Ihnen möglicherweise dabei helfen.

mystring.replace("}", "").replace("{", "");

Bearbeiten:

Wenn die geschweifte Klammer das Problem verursacht, würde dies möglicherweise funktionieren ...

var reg = new RegExp("\\{|\\}", "g");
mystring.replace(reg, "");

Beispiel von der Konsole ...

> var mystring = "test{foo}bar{baz}";
> var reg = new RegExp("\\{|\\}", "g");
> mystring.replace(reg, "");
 "testfoobarbaz"

Zuletzt könnten Sie dies tun:

Wenn eine Regex für Sie wirklich nicht funktioniert, ersetzt dies alle { und } In Anbetracht der Leistung ist es wahrscheinlich eine schreckliche Lösung, aber ...

mystring.split("}").join("").split("{").join("");
3
Kyle 8 Okt. 2012 im 18:53

Du könntest es versuchen

mystring.replace(/\u007B/g,"");

Dies verwendet eher Unicode als das eigentliche Symbol, damit Ihr Packer nicht verwirrt wird. Wenn Sie mehr als ein Zeichen in einer einzelnen Anweisung ersetzen möchten, können Sie die Pipe "oder" verwenden:

mystring.replace(/\u007B|\u007D/g,"");

{ = \u007B
} = \u007D

Weitere Unicode-Codes finden Sie unter:
http://www.unicode.org/charts/PDF/U0000.pdf

2
JDB still remembers Monica 8 Okt. 2012 im 18:10