La función replace en Javascript nos permite reemplazar una cadena por otra, ya sea utilizando cadenas de texto o expresiones regulares. Si bien no nos ofrece indicar una posición concreta para poder reemplazar un elemento por otro. Así que vamos a ver cómo podemos reemplazar por posición con Javascript.
Lo que vamos a crear es un prototipo sobre el propio objeto String
para que podamos aplicar la función reemplazando por posición directamente sobre una cadena de texto. De esta manera vamos a crear una función que llamaremos replaceAt()
la cual reciba dos parámetros. El primero será la posición de la cadena en la cual queremos realizar el reemplazo y por otro el contenido que queremos poner en dicha posición.
Así, nuestra función .replaceAt()
se prototipará sobre el objeto String
de Javascript de la siguiente forma:
String.prototype.replaceAt = function(index, replacement) {}
La implementación de nuestra función .replaceAt()
lo que hará será concatenar 3 cadenas. La primera es la que va desde la posición inicial a la posición en la que se quiere hacer la sustitución. Para ello utilizamos la función .substr()
de las cadenas Javascript. La segunda cadena que concatenaremos será la nueva cadena que queremos meter y, por último, la última cadena que concatenaremos será desde la posición del índice más el tamaño del contenido que hemos insertado hasta el final de la cadena original.
La codificación de concatenación será de la siguiente forma:
String.prototype.replaceAt = function(index, replacement) { return this.substr(0, index) + replacement + this.substr(index + replacement.length); }
Ahora ya nos queda invocarla directamente sobre una cadena. Así que definimos una cadena:
let cadena = "Soy una cadena";
Y sobre dicha cadena podemos invocar a la función .replaceAt()
para poder reemplazar por posición con Javascript:
cadena = cadena.replaceAt(3,"_"); cadena = cadena.replaceAt(7,"_"); console.log(cadena);
De esta forma ya podemos utilizar la función dentro de nuestro código fuente de forma sencilla.