una ultimo quitar primer palabras especiales espacios entre eliminar ejemplo cortar caracteres caracter cadena buscar javascript string replace character

ultimo - ¿Cómo puedo eliminar un carácter de una cadena usando Javascript?



quitar caracteres especiales javascript (13)

Estoy muy cerca de conseguir esto, pero no está bien. Todo lo que me gustaría hacer es eliminar el carácter "r" de una cadena. El problema es que hay más de una instancia de "r" en la cadena. Sin embargo, siempre es el cuarto personaje.

cadena de ejemplo: "crt / r2002_2" Lo que quiero: "crt / 2002_2"

Esta función de reemplazo elimina tanto "r"

mystring.replace(/r/g, '''')

Produce: "ct / 2002_2"

Probé esta función:

String.prototype.replaceAt = function (index, char) { return this.substr(0, index) + char + this.substr(index + char.length); } mystring.replaceAt(4, '''')

Solo funciona si lo sustituyo por otro personaje. No simplemente lo eliminará.

¿Alguna idea?


Solo funciona si lo sustituyo por otro personaje. No simplemente lo eliminará.

Esto se debe a que cuando char es igual a "" , char.length es 0, por lo que sus subcadenas se combinan para formar la cadena original. Siguiendo con su intento de código, lo siguiente funcionará:

String.prototype.replaceAt = function (index, char) { return this.substr(0, index) + char + this.substr(index + 1); // this will ''replace'' the character at index with char ^ }


En C # (Sharp), puedes hacer un carácter vacío como ''/ 0''. Tal vez puedas hacer esto:

String.prototype.replaceAt = function (index, char) { return this.substr(0, index) + char + this.substr(index + char.length); } mystring.replaceAt(4, ''/0'')

Busque en google o navegue en el interent y verifique si javascript le permite crear caracteres vacíos, como hace C #. Si es así, entonces aprenda cómo hacerlo, y tal vez la función replaceAt funcione por fin, ¡y logrará lo que desea!

¡Finalmente ese personaje ''r'' será eliminado!


La forma más corta sería usar splice.

var inputString = "abc"; // convert to array and remove 1 element at position 4 and save directly to the array itself let result = inputString.split("").splice(3, 1).join(); console.log(result);


La siguiente función funcionó mejor para mi caso:

public static cut(value: string, cutStart: number, cutEnd: number): string { return value.substring(0, cutStart) + value.substring(cutEnd + 1, value.length); }


No me gusta usar la función de reemplazo para eliminar los caracteres de la cadena. Esto no es lógico hacerlo así. Por lo general, programo en C # (Sharp), y siempre que quiero eliminar caracteres de la cadena, uso el método Eliminar de la clase Cadena, pero no el método Reemplazar, aunque exista, porque cuando estoy a punto de eliminar, elimino, no reemplazar ¡Esto es lógico!

En Javascript, no hay una función de eliminación para la cadena, pero hay una función substr. Puede usar la función substr una o dos veces para eliminar caracteres de la cadena. Puede realizar la siguiente función para eliminar caracteres en el índice de inicio hasta el final de la cadena, al igual que el método c # primero sobrecarga String.Remove (int startIndex):

function Remove(str, startIndex) { return str.substr(0, startIndex); }

y / o también puede realizar la siguiente función para eliminar caracteres en el índice de inicio y el recuento, al igual que la segunda sobrecarga del método c # String.Remove (int startIndex, int count):

function Remove(str, startIndex, count) { return str.substr(0, startIndex) + str.substr(startIndex + count); }

¡Y luego puedes usar estas dos funciones o una de ellas para tus necesidades!

Ejemplo:

alert(Remove("crt/r2002_2", 4, 1));

Salida: crt / 2002_2

Lograr objetivos haciendo técnicas sin lógica puede causar confusiones en la comprensión del código y futuros errores, ¡si lo haces mucho en un proyecto grande!


Para el reemplazo global de ''/ r'', este código funcionó para mí.

mystring = mystring.replace(///r/g,'''');


Si siempre es el 4º personaje en tu Cadena, puedes probar:

yourString.replace(/^(.{4})(r)/, function($1, $2) { return $2; });


Siempre están las funciones de cadena, si sabes que siempre vas a eliminar el cuarto carácter:

str.slice(0, 4) + str.slice(5, str.length))


Solo arregla tu replaceAt

String.prototype.replaceAt = function(index, charcount) { return this.substr(0, index) + this.substr(index + charcount); } mystring.replaceAt(4, 1);

Yo lo llamaría removeAt lugar. :)


Tu primera función es casi correcta. Simplemente quite la bandera ''g'' que significa ''global'' (editar) y dale un poco de contexto para detectar la segunda ''r''.

Edición: no vi que era la segunda ''r'' antes, así que agregó la ''/''. Necesita / / para escapar de ''/'' cuando se usa un argumento regEx. Gracias por los votos positivos, pero me equivoqué, así que arreglaré y agregaré más detalles para las personas interesadas en comprender mejor los conceptos básicos de regEx, pero esto funcionaría:

mystring.replace(///r/, ''/'')

Ahora para la explicación excesiva:

Al leer / escribir un patrón regEx, piense en términos de: <un carácter o conjunto de caracteres> seguido de <un carácter o conjunto de caracteres> seguido de <...

En regEx, un carácter o un conjunto de caracteres puede ser uno a la vez:

/each char in this pattern/

Así que lee como e, seguido de a, seguido de c, etc ...

O un solo <un carácter o un conjunto de caracteres> podría ser caracteres descritos por una clase de caracteres:

/[123!y]/ //any one of these /[^123!y]/ //anything but one of the chars following ''^'' (very useful/performance enhancing btw)

O expandido para que coincida con una cantidad de caracteres (pero aún así es mejor pensar como un elemento único en términos del patrón secuencial):

/a{2}/ //precisely two ''a'' chars - matches identically as /aa/ would /[aA]{1,3}/ //1-3 matches of ''a'' or ''A'' /[a-zA-Z]+/ //one or more matches of any letter in the alphabet upper and lower //''-'' denotes a sequence in a character class /[0-9]*/ //0 to any number of matches of any decimal character (//d*/ would also work)

Así que haz un montón juntos:

var rePattern = /[aA]{4,8}(Eat at Joes|Joes all you can eat)[0-5]+/g var joesStr = ''aaaAAAaaEat at Joes123454321 or maybe aAaAJoes all you can eat098765''; joesStr.match(rePattern); //returns ["aaaAAAaaEat at Joes123454321", "aAaAJoes all you can eat0"] //without the ''g'' after the closing ''/'' it would just stop at the first match and return: //["aaaAAAaaEat at Joes123454321"]

Y, por supuesto, he elaborado demasiado, pero mi punto era simplemente que esto:

/cat/

es una serie de 3 elementos de patrón (una cosa seguida de una cosa seguida de una cosa).

Y así es esto:

/[aA]{4,8}(Eat at Joes|Joes all you can eat)[0-5]+/

Por raro que parezca que regEx comienza a verse, todo se descompone en una serie de cosas (potencialmente cosas de múltiples caracteres) que se suceden secuencialmente. Una especie de punto básico, pero que me tomó un tiempo superar, así que exagero explicándolo aquí, ya que creo que ayudaría al OP y a otros nuevos a comprender mejor lo que está sucediendo. La clave para leer / escribir regEx es dividirlo en esas piezas.


Una forma simple y funcional de javascript sería

mystring = mystring.split(''/r'').join(''/'')

Simple, rápido, reemplaza globalmente y no necesita funciones ni prototipos.


return this.substr(0, index) + char + this.substr(index + char.length);

char.length es cero. Debe agregar 1 en este caso para omitir el carácter.


var mystring = "crt/r2002_2"; mystring = mystring.replace(''/r'',''/'');

reemplazará /r con / using String.prototype.replace .

Alternativamente, puede usar expresiones regulares con una bandera global (como lo sugiere Erik Reppen y Sagar Gala , a continuación) para reemplazar todas las ocurrencias con

mystring = mystring.replace(///r/g, ''/'');