El PO no dice por qué no está funcionando, pero parece que hay problemas relacionados con la codificación del archivo. Si tengo un archivo ANSI codificado y lo hago:
var s = "“This is a test” ‘Another test’";
s = s.replace(/[“”]/g, '"').replace(/[‘’]/g,"'");
document.writeln(s);
me sale:
"This is a test" "Another test"
Convertí la codificación UTF-8, fija las comillas tipográficas (que se rompió cuando cambié de codificación), luego se convirtió nuevamente a ANSI y el problema desapareció.
Tenga en cuenta que al copiar y pegar las comillas dobles e individuales inteligentes fuera de esta página en mi documento de prueba (ANSI codificada) y encontré este código:
var s = "“This is a test” ‘Another test’";
for (var i = 0; i < s.length; i++) {
document.writeln(s.charAt(i) + '=' + s.charCodeAt(i));
}
descubrí que todas las comillas tipográficas se presentaron como ? = 63
.
Por lo tanto, para el OP, determine dónde se originan las comillas inteligentes y asegúrese de que sean los códigos de caracteres que espera que sean. Si no lo son, considere cambiar la codificación de la fuente para que lleguen como “ = 8220
, ” = 8221
, ‘ = 8216
y ’ = 8217
. Use mi ciclo para examinar la fuente, si las comillas inteligentes se muestran con cualquier valor charCodeAt()
que no sean los que he enumerado, replace()
no funcionará como está escrito.
Esto podría ser un problema de codificación de caracteres. ¿Qué codificación usa en su código y qué codificación tiene su información? – Gumbo