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

132
Vistas
¿Cómo iterar la matriz de resultados divididos de un valor de cadena de varias líneas para reformatear ciertas líneas/nuevas líneas?

Tengo una cadena de datos que tiene saltos de línea en el medio. Por ejemplo:

 "Product Name \n Product Color \n Product Quantity \n Product Location \n Product Size \n Product Power"

La cantidad de elementos en la cadena podría ser infinita.

Necesito reemplazar \n con >>>> \n pero solo cuando los números de línea son mayores que 3 y no la última línea. En la última línea necesito que diga (end)

Probé el mapa y puedo dividir y reemplazar, pero tengo problemas para iterar a través de la matriz para identificar las líneas que se van a modificar. Además de volver a unirlos una vez que todas las líneas se modifican o no.

La entrada es:

 "Retract-A-Banner\n**Template:\nFull Color\nImprint Information:\nCL: 488 Special Ops Wing\n353 SOW Integrated Resilience Optimization Network\n"

Rendimiento esperado:

 "Retract-A-Banner\n**Template:\nFull Color >>>> \nImprint Information: >>>> \nCL: 488 Special Ops Wing >>>> \n353 SOW Integrated Resilience Optimization Network(end)\n"
over 4 years ago · Santiago Trujillo
5 Respuestas
Responde la pregunta

0

Divida por \n y vuelva a crear su cadena con las condiciones:

  1. si este es el ultimo entonces agrega (end)
  2. si la línea es mayor que 3, agregue >>>> \n
  3. de lo contrario, un simple \n estará bien

EDITAR:

agregue una verificación si la última cadena es \n y elimine ese valor de la matriz.

 const str = "Retract-A-Banner\n**Template:\nFull Color\nImprint Information:\nCL: 488 Special Ops Wing\n353 SOW Integrated Resilience Optimization Network\n"; const splitted = str.split('\n'); let output = ''; if (splitted[splitted.length - 1] === '') splitted.length--; for (let i = 0; i < splitted.length; i++) { if (i + 1 === splitted.length) { output += splitted[i] + ' (end)'; } else if (i >= 2) { output += splitted[i] + ' >>>> \n'; } else { output += splitted[i] + '\n'; } } console.log(output);

over 4 years ago · Santiago Trujillo Denunciar

0

Parece que quieres algo como esto:

 var strings = `Retract-A-Banner\nTemplate:\nFull Color\nImprint Information:\nCL: 488 Special Ops Wing\n353 SOW Integrated Resilience Optimization Network\n`.split("\n"); strings.forEach((string,index) => { if (index > 2) { strings[index] = `>>>>\\n${string}` } else { index > 0 ? `\\n${string}` : strings[index]; } }) var finalString = strings.join("")+"(end)"; console.log(finalString);

Tenga en cuenta que estoy escapando de su \n en ese código con una barra invertida adicional. Sin embargo, no puedo decir si eso es lo que quieres.

over 4 years ago · Santiago Trujillo Denunciar

0

Qué tal algo como esto:

 var data = "Retract-A-Banner\n**Template:\nFull Color\nImprint Information:\nCL: 488 Special Ops Wing\n353 SOW Integrated Resilience Optimization Network\n"; function convertToLines(entry) { return entry.split("\n").filter((val) => val); } function constructOutput(lines) { const numLines = lines.length; return lines.reduce((result, entry, index) => { var separator = index > 2 ? " >>>> \n" : "\n"; if (index == numLines - 1) { separator = "(end)\n"; } return result + entry + separator; }, ""); } console.log(constructOutput(convertToLines(data)));

convertToLines usa el filter para volcar las entradas vacías que obtiene de la nueva línea al final de la cadena. Y luego tenemos que agregar eso al separador (end) .

over 4 years ago · Santiago Trujillo Denunciar

0

Para insertar >>>> puedes usar la expresión regular: (?<=(.+\n.+){2,})(?=\n.)

  • El (?<=(.+\n.+){2,}) crea una mirada positiva hacia atrás para tres líneas
  • El (?=\n.) crea una anticipación positiva para una nueva línea seguida de cualquier carácter

Y luego puede usar la expresión regular similar (?<=.)(?=\n*$) para agregar '(end)' a la última línea.

 const input = "Retract-A-Banner\n**Template:\nFull Color\nImprint Information:\nCL: 488 Special Ops Wing\n353 SOW Integrated Resilience Optimization Network\n"; const output = input .replace(/(?<=(.+\n.+){2,})(?=\n.)/g, ' >>>> ') .replace(/(?<=.)(?=\n*$)/, '(end)'); console.log(input); console.log(output);


Si está utilizando una barra invertida literal seguida de una 'n' en su cadena, tendría el formato \\\n en su literal de cadena JS.

En ese caso, puede usar la expresión regular (?<=(.+\\n.+){2,})(?=\\n.) para insertar >>>> y la expresión regular (?=\\n$) para el (end) .

 const input = "Retract-A-Banner\\n**Template:\\nFull Color\\nImprint Information:\\nCL: 488 Special Ops Wing\\n353 SOW Integrated Resilience Optimization Network\\n"; const output = input .replace(/(?<=(.+\\n.+){2,})(?=\\n.)/g, ' >>>> ') .replace(/(?=\\n$)/, '(end)'); console.log(input); console.log(output);

over 4 years ago · Santiago Trujillo Denunciar

0

  • Convertir cadena en una matriz de cadenas

     string.split(/\n/)
  • Luego use .flatMap() y un ternario encadenado como devolución de llamada. Cada condición se basa en el índice

     idx < 3 ? [str+' \n'] : idx === arr.length -1 ? [str+' (end)'] : [str+' >>>> \n']
  • Luego .join('') la matriz de nuevo en una cadena

 let test = `Retract-A-Banner\nTemplate:\nFull Color\nImprint Information:\nCL: 488 Special Ops Wing\n353 SOW Integrated Resilience Optimization Network\n" Expected Output:"Retract-A-Banner\nTemplate:\nFull Color \nImprint Information: \nCL: 488 Special Ops Wing \n353 SOW Integrated Resilience Optimization Network`; const formatLines = string => string.split(/\n/).flatMap((str, idx, arr) => idx < 3 ? [str + ' \n '] : idx === arr.length - 1 ? [str + ' (end) '] : [str + ' >>>> \n ']).join(''); console.log(formatLines(test));

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