Como dice el título, necesito relacionar todas las apariciones del signo $ en una variable de cadena con un guión bajo.
que he intentado:
str.replace(new RegExp('$', 'g'), '_');
Pero esto no funciona para mí y nada es reemplazado.
Como dice el título, necesito relacionar todas las apariciones del signo $ en una variable de cadena con un guión bajo.
que he intentado:
str.replace(new RegExp('$', 'g'), '_');
Pero esto no funciona para mí y nada es reemplazado.
El $
en RegExp es un carácter especial, por lo que debe escapar con barra invertida. Sin embargo
new_str = str.replace(new RegExp('\\$', 'g'), '_');
, en JS puede utilizar la sintaxis más simple
new_str = str.replace(/\$/g, '_');
........
str.replace(new RegExp('\\$', 'g'), '_');
Becaue $
es Char especial en js, que necesita para escapar de ella.
El segundo es incorrecto en dos aspectos, reemplazará '\ $', no '$' y solo reemplazará 1 ocurrencia, no múltiples. –
@Andy: Sí, me di cuenta y lo eliminé pronto :) Gracias – Sarfraz
No es necesario utilizar RegExp
. Se puede utilizar la sintaxis literal:
str.replace(/\$/g, '_')
Sólo tiene que escapar el carácter $
ya que es un carácter especial en las expresiones regulares que marca el final de la cadena.
Editar Oh, también se puede utilizar split
y join
para resolver esto:
str.split("$").join("_")
Al igual que la idea de dividir y unir: ¿qué tan rápido es en comparación con una expresión regular, me pregunto? –
No es necesario expresiones regulares sólo para reemplazar un símbolo:
newStr = oldStr.replace('$', '_')
El título indicó "todas" las ocurrencias. – kennytm
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/String/replace – user187291
Esto reemplazará solo la primera aparición del símbolo, no todas las ocurrencias. Por favor, elimine esta respuesta, ya que es claramente incorrecta – edc65
+1, ve por lo literal, no te molestes con el constructor a menos que necesites usar variables en expresiones regulares. –