Saltar al contenido

Elimine todos los caracteres especiales excepto el espacio de una cadena usando JavaScript

Solución:

Debe usar la función de reemplazo de cadena, con una sola expresión regular. Suponiendo que por caracteres especiales te refieres a cualquier cosa que no sea letra, aquí hay una solución:

const str = "abc's test#s";
console.log(str.replace(/[^a-zA-Z ]/g, ""));

Puedes hacerlo especificando los caracteres que quieres eliminar:

string = string.replace(/[&/\#,+()$~%.'":*?<>{}]/g, '');

Alternativamente, para cambiar todos los caracteres excepto números y letras, intente:

string = string.replace(/[^a-zA-Z0-9]/g, '');

La primera solución no funciona con ningún alfabeto UTF-8. (Cortará texto como Привіт). He logrado crear una función que no usa RegExp y usa un buen soporte UTF-8 en el motor JavaScript. La idea es simple si un símbolo es igual en mayúsculas y minúsculas es un carácter especial. La única excepción se hace para los espacios en blanco.

function removeSpecials(str) {
    var lower = str.toLowerCase();
    var upper = str.toUpperCase();

    var res = "";
    for(var i=0; i<lower.length; ++i) {
        if(lower[i] != upper[i] || lower[i].trim() === '')
            res += str[i];
    }
    return res;
}

Actualizar: Tenga en cuenta que esta solución solo funciona para idiomas donde hay letras minúsculas y mayúsculas. En idiomas como el chino, esto no funcionará.

Actualización 2: Llegué a la solución original cuando estaba trabajando en una búsqueda difusa. Si también intenta eliminar caracteres especiales para implementar la función de búsqueda, existe un enfoque mejor. Use cualquier biblioteca de transliteración que produzca su cadena solo a partir de caracteres latinos y luego el simple Regexp hará toda la magia de eliminar caracteres especiales. (Esto también funcionará para los chinos y también recibirá beneficios secundarios al hacer Tromsø == Tromso).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *