2008-10-31 9 views
13

Este es simple. Quiero reemplazar una subcadena con otra subcadena en el lado del cliente usando Javascript.Javascript - cómo reemplazar una subcadena?

cadena original es 'original READ ONLY'

quiero reemplazar el 'READ ONLY' con 'READ WRITE'

Cualquier respuesta rápida por favor? Posiblemente con un fragmento de código de JavaScript ...

+8

No estoy seguro de que estés siendo muy honesto. La pregunta podría ser "obvia", pero son las pequeñas cosas que importan cuando uno está implementando alguna funcionalidad. Esp cosas que ver con la manipulación de cadenas. Siento que Stackoverflow es el más adecuado para eso. Así que por favor no prejuzguen. –

+0

Preguntaba cómo reemplazar una * palabra definida * en una * cadena definida *. No puedo ver ninguna sutileza dependiente de la implementación en eso, es simple y directo. Sin ofender, no hay nada de malo en * preguntar * ese tipo de preguntas. Algo está mal con * up-voting * them. – Tomalak

+2

Su queja es infundada. El texto 'alt' en la imagen de la flecha hacia arriba dice" Esta pregunta es útil y clara ... "que es una cuestión subjetiva. Ahora, si dice "Esta pregunta es útil y clara para el Embajador Tomalak ..." podría haber motivos para su queja. –

Respuesta

25

String.replace() es a base de expresión regular; si pasa una cadena como primer argumento, la expresión regular elaborada a partir de ella no incluirá el indicador 'g' (global). Esta opción es esencial si desea reemplazar todas las ocurrencias de la cadena de búsqueda (que generalmente es lo que desea).

Un modismo no expreg alternativa sencilla cadena de reemplazo global es:

function string_replace(haystack, find, sub) { 
    return haystack.split(find).join(sub); 
} 

Esto es preferible cuando la cadena ‘encontrar’ puede contener caracteres que tienen un significado especial no deseado en las expresiones regulares.

De todos modos, cualquier método está bien para el ejemplo en la pregunta.

+0

¡Esto es realmente útil, TY! –

12

Bueno summary. Es basado en expresiones regulares, si usas la notación regexp puedes especificar los modificadores i y g (sin distinción de mayúsculas y minúsculas (i), que coincidirá independientemente del caso y global (g), que reemplazará todas las ocurrencias), si usas la notación de cuerdas se convertirá en una expresión regular y no podrás especificar ningún modificador.

<script type="text/javascript"> 

var str1="Visit Microsoft!"; 
var str2 = str1.replace(/microsoft/i, "W3Schools"); //Will work, per the i modifier 

var str3 = "original READ ONLY"; 
var str4 = str3.replace("ONLY", "WRITE"); //Will also work 

</script> 
+8

str2 = str2.replace (/^Visit /, 'Do not visit'); – Gareth

+0

Funciona para mí. ¡muchas gracias! –

+0

La respuesta de bobince es la más correcta; esta respuesta implica que pasar una cadena no es lo mismo que la expresión regular, pero como lo indica bobince, de cualquier manera se usa como expresión regular. –

3
stringObject.replace(findstring,newstring) 
+0

muy simple, ¿no es así? –

2

Yo prefiero el enfoque de expresiones regulares,

newString = oldstring.replace (/ regexforstringtoreplace /, 'nueva cadena');

También vale la pena considerar los modificadores g y i regex, estos hacen un reemplazo global (es decir, reemplaza todas las ocurrencias) y lo hace insensible a mayúsculas y minúsculas.

por ejemplo:

<script type="text/javascript"> 

var str = "this is a String"; 

document.write(str.replace(/\s/g, "_")); 

would print: this_is_a_string 

document.write(str.replace(/s/gi, "f")); 

would print "thif if a ftring" 

</script> 
Cuestiones relacionadas