Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

194
Views
Reemplazar palabras encontradas en cadena

Estoy tratando de reemplazar palabras en una cadena con una clave coincidente y una posición de índice sin eliminar las otras palabras.

Mi resultado deseado es: hey HI hey HELLO

Lo que he probado hasta ahora...

 var data = { items: ["item", "HI", "item2"], moreitems: ["moreitem", "moreitem1", "HELLO"] } var str = "hey #items1 hey #moreitems2"; var newStr = ''; var match = str.match(/#(.*?)\d+/g); //get str that starts with # and ends with digits for (var i = 0; i < match.length; i++) { var keys = match[i].replace(/#|\d+/g, ''), // remove hash and numbers to match the data keys pos = match[i].replace(/\D/g, ''); // get the digits in str newStr += data[keys][pos] + ' '; } console.log(newStr)

¡Gracias por tu ayuda!

about 4 years ago · Juan Pablo Isaza
3 answers
Answer question

0

Una solución simple sería usar replace() con una función de reemplazo.

Uso la expresión regular /#(\D+)(\d+)/g . # coincidente, seguido de uno o más que no sean dígitos (colocados en el grupo de captura 1), seguidos de uno o más dígitos (colocados en el grupo de captura 2).

diagrama de expresiones regulares
expresión regular

Todos los grupos de captura se pasan como argumentos de la función de reemplazo. La coincidencia completa se pasa como primer argumento, el grupo de captura 1 como segundo, etc.

Dentro de la función de reemplazo, puede acceder al valor según el índice y el nombre del atributo capturado.

 var data = { items: ["item", "HI", "item2"], moreitems: ["moreitem", "moreitem1", "HELLO"] } var str = "hey #items1 hey #moreitems2"; const result = str.replace( /#(\D+)(\d+)/g, (_match, attr, index) => data[attr][index] ); console.log(result);

about 4 years ago · Juan Pablo Isaza Report

0

puedes usar

  • string.replace para reemplazar el substr al final del proceso
  • calcule el índice en la matriz de cadenas recuperando el último carácter de la cadena de coincidencia con match[match.length - 1]
  • recupere la categoría de datos para usar eliminando el primer y el último carácter category = match.slice(0, -1).substring(1);

 var data = { items: ["item", "HI", "item2"], moreitems: ["moreitem", "moreitem1", "HELLO"] } var str = "hey #items1 hey #moreitems2"; var newStr = str; var match = str.match(/#(.*?)\d+/g); var index, category; console.log(match); match.forEach(match => { index = match[match.length - 1]; category = match.slice(0, -1).substring(1); newStr = newStr.replace(match, data[category][index]); }); console.log(newStr)

about 4 years ago · Juan Pablo Isaza Report

0

const dic = { xxx: 'hello', yyy: 'world', zzz: 'peace' } const string = 'hey! #xxx, #yyy! #zzz on you' const newString = string.replace(/#\w+/g, item => dic[item.substring(1)]) console.log(string) console.log(newString)
about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!