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

152
Views
reemplazar la palabra con la coincidencia del objeto en JS

Estoy tratando de reemplazar palabras en una cadena con coincidencias de un objeto. Si una palabra coincide con la propiedad de un objeto, será reemplazada por el valor relevante. Mi problema son los casos en los que hay un carácter antes y después de la palabra que debe reemplazarse, a menos que el carácter sea un espacio en blanco o un guión.

 function fixTypos(str) { var typoObject = { descriptiogn:'description', decscription:'description', vdescription:'description', wdescription:'description', descriptiog:'description', statucs:'status', statuqs:'status', cstatus:'status', for (var key in typoObject) { str = str.replace(new RegExp(`\\b${key}\\b`, "gi"), typoObject[key]); } return str; }

teststring: 'word -decscription word2 adescriptiogn word3 -astatucs'

salida actual: 'word -description word2 adescriptiogn word3 -astatucs'

salida deseada: 'word -description word2 description word3 -status'

Mi enfoque podría ser el incorrecto, ya que empiezo a dudar de que se pueda hacer a través de expresiones regulares, pero tal vez alguien aquí tenga una idea para mí.

Editar: agregó más variedad en el objeto. El objeto es un ejemplo, pero el que uso para mi proyecto contiene más de 2k propiedades: pares de valores con valores que no siempre coinciden

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

0

Podría crear una expresión regular para capturar cualquiera de las palabras clave, utilizando un grupo de captura para identificar cuál era y una función de devolución de llamada para realizar la búsqueda de la traducción:

 const translation = { descriptiogn:'description', decscription:'description', vdescription:'description', wdescription:'description', descriptiog:'description', statucs:'status', statuqs:'status', cstatus:'status', }; const regex = new RegExp("\\b\\w*(" + Object.keys(translation) .sort((a, b) => b.length - a.length) .join("|") + ")\\w*\\b", "g"); const fixTypos = str => str.replace(regex, (_, match) => translation[match]); const teststring= 'word -decscription word2 adescriptiogn word3 -astatucs' console.log(fixTypos(teststring));

Puede ser necesario ordenar las palabras clave de la más larga a la más corta para dar prioridad a las coincidencias más largas cuando también coincidiría una clave más corta.

about 4 years ago · Juan Pablo Isaza Report

0

Simplemente usaría una alternancia aquí. Cree una matriz de términos de variantes de descripción para buscar y luego realice un reemplazo global.

 var input = 'word -decscription word2 adescriptiogn word3 -adescriptiogn'; var terms = ['descriptiogn', 'decscription', 'vdescription', 'wdescription', 'descriptiog']; var regex = new RegExp("\\b\\w*(?:" + terms.join("|") + ")\w*\\b", "g"); var output = input.replace(regex, "description"); console.log(input); console.log(output);

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!