Tengo un texto y después de eliminar caracteres especiales (!@#$%^&*()-=+`";:'><.?/) y mostrar solo letras y números (y números flotantes como 23.4) devuelve algunos espacio extra
const input : 'this is a signal , entry : 24.30 and side is short'; const text = input.replace(/\.(?!\d)|[^\w.]/g, " ").toUpperCase(); console.log(text.split(" "))La salida :
[ 'THIS', 'IS', 'A', 'SIGNAL', '', '', '', 'ENTRY', '', '', '24.30', 'AND', 'SIDE', 'IS', 'SHORT' ]pero quiero ser esto:
[ 'THIS', 'IS', 'A', 'SIGNAL', 'ENTRY', '24.30', 'AND', 'SIDE', 'IS', 'SHORT' ]Y cuando reemplazo espacios y entro con una cadena vacía, devuelve esto:
[ 'THISISASIGNALENTRY24.30ANDSIDEISSHORT' ]¿Cuál es el problema de mi código?
En lugar de reemplazar, considere hacer coincidir todos los tipos de caracteres que desea producir en la matriz de palabras. Parece que quieres algo como:
const input = 'this is a signal , entry : 24.30 and side is short'; const matches = input.toUpperCase().match(/[\w.]+/g); console.log(matches);El segundo parámetro en el método de replace debe ser una cadena vacía y no un espacio como lo tiene en su código.
Solo haz:
... const text = input.replace(/\.(?!\d)|[^\w.]/g, "").toUpperCase(); ...