Quiero usar str_replace
o una alternativa similar para reemplazar texto en JavaScript.
var text = "this is some sample text that i want to replace";
var new_text = replace_in_javascript("want", "dont want", text);
document.write("new_text");
debería dar
this is some sample text that i dont want to replace
Si va a regex, cuáles son las implicaciones de rendimiento en comparación con los métodos de reemplazo incorporados.
str_replace
también acepta dos matrices de la misma longitud, donde cada cadena en la primera matriz se reemplaza con la cadena en la segunda matriz en el mismo índice. Consulte stackoverflow.com/a/5069776/296430 para conocer la única función correcta que he encontrado hasta ahora que imita este comportamiento exacto en javascript.Respuestas:
El uso de expresiones regulares para el reemplazo de cadenas es significativamente más lento que el uso de un reemplazo de cadenas.
Como se demostró en JSPerf , puede tener diferentes niveles de eficiencia para crear una expresión regular, pero todos ellos son significativamente más lentos que un simple reemplazo de cadena. La expresión regular es más lenta porque :
Para una prueba simple ejecutada en la página JS perf, he documentado algunos de los resultados:
Los resultados para Chrome 68 son los siguientes:
En aras de la exhaustividad de esta respuesta (tomando prestado de los comentarios), vale la pena mencionar que
.replace
solo reemplaza la primera instancia del personaje coincidente. Solo es posible reemplazar todas las instancias con//g
. Se podría argumentar que el rendimiento y la elegancia del código son peores si se reemplazan múltiples instanciasname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
o peor.while (name.includes(' ')) { name = name.replace(' ', '_') }
fuente
.replace
solo reemplaza la primera instancia del personaje coincidente. Solo es posible reemplazar todas las instancias con//g
. Se podría argumentar que la compensación del rendimiento es peor si se reemplazan varias instanciasname.replace(' ', '_').replace(' ', '_').replace(' ', '_');
o peorwhile (name.includes(' ')) { name = name.replace(' ', '_') }
Usarías el
replace
método:El primer argumento es lo que estás buscando, obviamente. También puede aceptar expresiones regulares.
Solo recuerda que no cambia la cadena original. Solo devuelve el nuevo valor.
fuente
Más simple:
¡Reemplaza todos los espacios con '_'!
fuente
.replace(/\\x3B/g,';')
Todos estos métodos no modifican el valor original, devuelve nuevas cadenas.
Reemplaza el primer espacio con _
Reemplaza todos los espacios con _ usando regex. Si necesita usar regex, le recomiendo probarlo con https://regex101.com/
Reemplaza todos los espacios con _ sin regex . Forma funcional.
fuente
Deberías escribir algo así:
fuente
El código que otros le están dando solo reemplaza una ocurrencia, mientras que el uso de expresiones regulares los reemplaza a todos (como dijo @sorgit). Para reemplazar todo el "querer" con "no querer", use este código:
La variable "new_text" resultará en "este es un texto de muestra que no quiero reemplazar".
Para obtener una guía rápida de expresiones regulares, vaya aquí:
http://www.cheatography.com/davechild/cheat-sheets/regular-expressions/
Para obtener más información
str.replace()
, vaya aquí:https://developer.mozilla.org/ es-ES / docs / JavaScript / Reference / Global_Objects / String / replace ¡
Buena suerte!
fuente
No necesariamente. ver la respuesta de Hans Kesting:
fuente
hm .. ¿Marcó usted replace ()?
Tu código se verá así
fuente
fuente
En JavaScript, llama al
replace
método en el objeto String, por ejemplo"this is some sample text that i want to replace".replace("want", "dont want")
, que devolverá la cadena reemplazada.fuente
JavaScript tiene un
replace()
método de objeto String para reemplazar subcadenas. Este método puede tener dos argumentos. El primer argumento puede ser una cadena o un patrón de expresión regular (objeto regExp) y el segundo argumento puede ser una cadena o una función. A continuación se muestra un ejemplo dereplace()
método que tiene ambos argumentos de cadena.Tenga en cuenta que si el primer argumento es la cadena, solo la primera aparición de la subcadena se reemplaza como en el ejemplo anterior. Para reemplazar todas las apariciones de la subcadena, debe proporcionar una expresión regular con un
g
indicador (global). Si no proporciona el indicador global, solo se reemplazará la primera aparición de la subcadena incluso si proporciona la expresión regular como primer argumento. Entonces, reemplacemos todas las ocurrencias delone
ejemplo anterior.Tenga en cuenta que no ajusta el patrón de expresión regular entre comillas, lo que lo convertirá en una cadena, no en un objeto regExp. Para realizar un reemplazo sin distinción entre mayúsculas y minúsculas, debe proporcionar una
i
marca adicional que haga que el patrón no distinga entre mayúsculas y minúsculas. En ese caso, la expresión regular anterior será/one/gi
. Observe lai
bandera agregada aquí.Si el segundo argumento tiene una función y si hay una coincidencia, la función se pasa con tres argumentos. Los argumentos que obtiene la función son la coincidencia, la posición de la coincidencia y el texto original. Debe devolver con qué se debe reemplazar esa coincidencia. Por ejemplo,
Puede tener más control sobre el texto de reemplazo utilizando una función como segundo argumento.
fuente
Puedes usar
Y para cambiar varios valores en una cadena a la vez, por ejemplo para cambiar # a la cadena v y _ a la cadena w:
fuente
Si realmente quieres un equivalente a PHP,
str_replace
puedes usar Locutus . La versión de PHPstr_replace
admite más opciones que las queString.prototype.replace
admite JavaScript . Por ejemplo etiquetas:o matriz
Además, esto no usa expresiones regulares, sino que usa para bucles. Si no desea usar expresiones regulares pero desea reemplazar una cadena simple, puede usar algo como esto (basado en Locutus)
Para obtener más información, consulte el código fuente https://github.com/kvz/locutus/blob/master/src/php/strings/str_replace.js
fuente
Ya hay múltiples respuestas usando str.replace () (que es lo suficientemente justo para esta pregunta) y
regex
puede usar la combinación de str.split () y join (), que es más rápido questr.replace()
yregex
.A continuación se muestra un ejemplo de trabajo:
fuente
Tienes las siguientes opciones:
Más información -> aquí
fuente
En Javascript, la función de reemplazo está disponible para reemplazar la subcadena de una cadena dada con una nueva. Utilizar:
Incluso puede usar expresiones regulares con esta función. Por ejemplo, si desea reemplazar todas las apariciones de
,
con.
.Aquí el
g
modificador solía coincidir globalmente con todas las coincidencias disponibles.fuente
Método para
replace substring in a sentence
usar React:RunMethodHere
fuente
Si no desea utilizar expresiones regulares, puede utilizar esta función que reemplazará todo en una cadena
Código fuente:
Cómo utilizar:
fuente
El
String.prototype.replace
primer argumento de JS debe ser un patrón Regex o String y el segundo argumento debe ser una String o una función.str.replace(regexp|substr, newSubStr|function);
Ex:
var str = 'this is some sample text that i want to replace'; var newstr = str.replace(/want/i, "dont't want"); document.write(newstr); // this is some sample text that i don't want to replace
fuente
No necesita bibliotecas adicionales.
fuente
Se agregó un método
replace_in_javascript
que satisfará sus requisitos. También descubrió que está escribiendo una cadena"new_text"
en ladocument.write()
que se supone que se refiere a una variablenew_text
.fuente