¿Existe una forma mejor de limpiar una cadena de texto?
Actualmente, este es mi código.
function cleanString(rawString) {
A = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890".split("");
var cleanedString = rawString.toLowerCase();
for (i = 0; i < cleanedString.length; i++) {
if (!A.includes(cleanedString[i])) {
cleanedString = setCharAt(cleanedString, i, " ");
}
}
cleanedString = cleanedString.replace(/\s\s+/g, " ");
return cleanedString;
}
function setCharAt(str, index, chr) {
if (index > str.length - 1) return str;
return str.substring(0, index) + chr + str.substring(index + 1);
}
No conozco las expresiones regulares y probablemente sea más fácil con ellas. Esto es lo que quiero hacer:
Entrada: Hola, David Mundo 123!
Salida: hola david mundo 123
.
Entrada: hELlo., <>;dAVId world .;- 123
Salida: hello david world 123
.
Entrada: He.llo David, w!orld 123#
Salida: he llo david w orld 123
.
Básicamente, lo que quiero hacer es reemplazar todo lo que no sea a-z0-9 con un espacio y luego eliminar los espacios en blanco duplicados. En otras palabras, solo quiero a-z0-9 en mis resultados. ¿Cómo puedo hacer eso?
PD: El código funciona, pero creo que se ve mal y es bastante ineficiente.
EDITAR: Lo siento, me refiero a que solo quiero letras minúsculas en mi salida. Soy tonto.
davy.ai
Para lograr el resultado deseado usando regex, puedes reemplazar cualquier caracter que no sea una letra minúscula o un número por un espacio utilizando el siguiente código:
Desglosemos la expresión regular utilizada en el método
replace
:/[^a-z0-9]+/g
coincidirá con cualquier caracter que no sea una letra minúscula o un número.+
significa que queremos coincidir con uno o más de estos caracteres.g
es una bandera que significa que queremos reemplazar todas las ocurrencias, no solo la primera.Entonces, básicamente estamos reemplazando cualquier secuencia de caracteres que no sean letras minúsculas o números por un solo espacio.
Finalmente, usamos
.trim()
para eliminar cualquier espacio al inicio o al final y.replace(/\s\s+/g, " ")
para reemplazar cualquier doble espacio por un solo espacio.Esta implementación es más concisa y eficiente que la anterior.