Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

300
Vistas
¿Hay una mejor manera de limpiar una cuerda?

Actualmente, este es mi código.

 function clean_string(raw_string) { A = "ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 1234567890".split( "" ); var cleaned_string = raw_string.toLowerCase(); for (i = 0; i < cleaned_string.length; i++) { if (!A.includes(cleaned_string[i])) { cleaned_string = setCharAt(cleaned_string, i, " "); } } cleaned_string = cleaned_string.replace(/\s\s+/g, " "); return cleaned_string; } function setCharAt(str, index, chr) { if (index > str.length - 1) return str; return str.substring(0, index) + chr + str.substring(index + 1); }

No sé expresiones regulares y probablemente será más fácil con expresiones regulares. Esto es lo que quiero hacer:

Entrada: Hello, David World 123!

Salida: hello david world 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 cualquier cosa menos a-z0-9 con un espacio y luego eliminar los espacios dobles. 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, quise decir que solo quiero letras minúsculas en mi salida. Soy tonto.

over 4 years ago · Santiago Trujillo
4 Respuestas
Responde la pregunta

0

Una solución simple sería convertir todos los caracteres a minúsculas, reemplazar cualquier carácter que no sea az, 0-9 o un espacio con un carácter de espacio y luego reemplazar varios caracteres de espacio con un solo carácter de espacio.

 function sanitize(input) { return input .toLowerCase() .replace(/([^az\d\s]+)/g, ' ') .replace(/(\s+)/g, ' '); } console.log(sanitize('Hello, David World 123!')); console.log(sanitize('hELlo., <>;dAVId world .;- 123')); console.log(sanitize('He.llo David, w!orld 123#'));

over 4 years ago · Santiago Trujillo Denunciar

0

Aquí hay un enfoque que usa una devolución de llamada de expresiones regulares:

 var inputs = ["Hello, David World 123!", "hELlo., <>;dAVId world .;- 123", "He.llo David, w!orld 123#"]; for (var i=0; i < inputs.length; ++i) { var input = inputs[i]; input = input.replace(/\w+/g, x => x.toLowerCase()) .replace(/[^\w_]+/g, " "); console.log(input); }

La estrategia aquí es hacer dos reemplazos de expresiones regulares. El primero encuentra todas las palabras en la entrada y las convierte a minúsculas. Luego, el segundo elimina todos los caracteres que no son palabras y los espacios en blanco, incluido el guión bajo, y los reemplaza con un solo espacio.

over 4 years ago · Santiago Trujillo Denunciar

0

Una expresión regular simple para reemplazar caracteres no alfanuméricos, luego otra para eliminar más de un espacio seguido debería ser suficiente.

 const clean = (input) => { const alphanumeric = input.replace(/[^a-zA-Z0-9]/g, ' ') const spaceless = alphanumeric.replace(/\s{2,}/g, ' ') console.log(spaceless.toLowerCase()) return spaceless.toLowerCase() } clean("Hello, David World 123!") clean("hELlo., <>;dAVId world .;- 123") clean("He.llo David, w!orld 123# ")

Por supuesto, la función se puede acortar a

 const clean = (input) => { return input.replace(/[^a-zA-Z0-9]/g, ' '). replace(/\s{2,}/g, ' '). toLowerCase() }

Explicación de expresiones regulares :

[^a-zA-Z0-9] : Coincide con cualquier cosa que no coincida con a-zA-Z0-9 (cualquier cosa no alfanumérica) \s{2,} : Coincide con un espacio que aparece dos o más veces seguidas

over 4 years ago · Santiago Trujillo Denunciar

0

Puede usar una sola llamada de reemplazo, ya sea en minúsculas solo caracteres en mayúsculas, o reemplazar 1 o más caracteres que no sean palabras con un solo espacio.

Para diferenciar entre el reemplazo y las minúsculas, puede usar un grupo de captura en la expresión regular y buscar ese grupo en la función de devolución de llamada.

Si coincide con el grupo 1, entonces hay 1 o más caracteres en mayúscula AZ.

 [ "Hello, David World 123!", "hELlo., <>;dAVId world .;- 123", "He.llo David, w!orld 123#" ].forEach(s => console.log( s.replace(/([AZ]+)|[^\w_]+/g, (_, g1) => g1 ? g1.toLowerCase() : ' ') ) )

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda