Das OP nicht sagen, warum es nicht funktioniert, aber es scheint, Probleme im Zusammenhang mit der Codierung der Datei zu sein. Wenn ich eine ANSI-codierte Datei haben, und ich tue:
var s = "“This is a test” ‘Another test’";
s = s.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");
document.writeln(s);
ich:
"This is a test" "Another test"
ich die Kodierung UTF-8 konvertiert, die typografische Anführungszeichen fixiert (die brach, als ich Codierung geändert), dann zurück zu ANSI konvertiert und das Problem ging weg.
Beachten Sie, dass, wenn ich kopiert und eingefügt, die Doppel- und Einzel typografische Anführungszeichen aus dieser Seite in mein Testdokument (ANSI codierte) und lief diesen Code:
var s = "“This is a test” ‘Another test’";
for (var i = 0; i < s.length; i++) {
document.writeln(s.charAt(i) + '=' + s.charCodeAt(i));
}
Ich entdeckte, dass alle typographische auftauchten als ? = 63
.
Also, zum OP, bestimmen, woher die intelligenten Zitate stammen und stellen Sie sicher, dass sie die Zeichencodes sind, die Sie erwarten, dass sie sind. Wenn dies nicht der Fall ist, erwägen Sie, die Codierung der Quelle so zu ändern, dass sie als “ = 8220
, ” = 8221
, ‘ = 8216
und ’ = 8217
eintrifft. Verwenden Sie meine Schleife, um die Quelle zu untersuchen. Wenn die intelligenten Anführungszeichen mit anderen Werten als den angegebenen charCodeAt()
angezeigt werden, funktioniert replace()
nicht wie geschrieben.
Dies könnte ein Zeichencodierungsproblem sein. Welche Codierung verwenden Sie in Ihrem Code und welche Codierung hat Ihre Daten? – Gumbo