Obtuve una matriz con muchas cadenas mal formateadas. Necesito agregar un espacio a la cadena después de los primeros tres números dentro de String con JavaScript . El principal problema es que no tengo un índice específico para insertar el espacio porque la cantidad de caracteres antes de los primeros tres números varía o no existe en absoluto.
Entrada de ejemplo:
[ "A12345678", "ABC12345678", "1234 56 7 8", "12 345 67 8", "AB12345678BVC", ]Salida deseada:
[ "A123 45678", "ABC123 45678", "123 45678", "123 45678", "AB123 45678BVC", ] Pensé que podría resolverse replaceAll los espacios para obtener una cadena continua y luego hacer un for loop sobre cada carácter por cadena y luego resolver esto escribiendo marcando los caracteres para agregar un espacio en la posición deseada, pero obtengo una gran cantidad de estas matrices desde el backend y puede terminar en un rendimiento terrible de esta manera.
La otra idea que tengo es resolver esto usando Regex como en este ejemplo de un tutorial, pero desafortunadamente apesto escribiendo Regex. Estaría muy agradecido si alguien me puede ayudar con esto.
Puede usar String.replace() junto con Array.map() para agregar el espacio requerido. En primer lugar, eliminamos todos los espacios de cada cadena, luego agregamos el espacio en la posición requerida.
const input = [ "A12345678", "ABC12345678", "1234 56 7 8", "12 345 67 8", "AB12345678BVC", ] const result = input.map(v => v.replace(/\s/g,'').replace(/(\d{3})/, '$1 ')); console.log(result) .as-console-wrapper { max-height: 100% !important; top: 0; }Usar
const texts = [ "A12345678", "ABC12345678", "1234 56 7 8", "12 345 67 8", "AB12345678BVC" ] for (const text of texts) { console.log(text, '->', text.replace(/\s+/g,'').replace(/\d{3}(?!$)/, '$& ')); }Es decir