2011-02-07 9 views
6

No estoy seguro de por qué pero parece que no puedo reemplazar un marcador de posición aparentemente simple.javascript - cadena reemplazar

Mi enfoque

var content = 'This is my multi line content with a few {PLACEHOLDER} and so on'; 
content.replace(/{PLACEHOLDER}/, 'something'); 
console.log(content); // This is multi line content with a few {PLACEHOLDER} and so on 

Cualquier idea de por qué no funciona?

¡Gracias de antemano!

+0

Agregar '' en torno PLACEHOLDER {} :-) –

+0

necesita almacenar el resultado de reemplazar alguna parte: intente esto: 'var content = 'esto es {placeholder}'; content = content.replace (/ {placeholder} /, 'algo'); alerta (contenido); ' debería funcionar – Shrinath

Respuesta

10

cadena de JavaScript reemplazar no modifica la cadena original. Además, la muestra del código solo reemplaza una instancia de la cadena, si desea reemplazar todo, deberá agregar 'g' a la expresión regular.

var content = 'This is my multi line content with a few {PLACEHOLDER} and so on'; 
var content2 = content.replace(/{PLACEHOLDER}/g, 'something'); 
console.log(content2); // This is multi line content with a few {PLACEHOLDER} and so on 
+0

gracias eso es exactamente lo que necesitaba! – n00b

2

Trate de esta manera:

var str="Hello, Venus"; 
document.write(str.replace("venus", "world")); 
16

aquí hay algo un poco más genérica:

var formatString = (function() 
{ 
    var replacer = function(context) 
    { 
     return function(s, name) 
     { 
      return context[name]; 
     }; 
    }; 

    return function(input, context) 
    { 
     return input.replace(/\{(\w+)\}/g, replacer(context)); 
    }; 
})(); 

Uso:

>>> formatString("Hello {name}, {greeting}", {name: "Steve", greeting: "how's it going?"}); 
"Hello Steve, how's it going?" 
+0

nice one - gracias! – n00b

Cuestiones relacionadas