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

204
Views
Reemplazar no funciona cuando se agrega un carácter adicional

A partir de mi pregunta anterior , descubrí cómo puedo reemplazar varios textos en una matriz sin llamar a la función .replace muchas veces

 const iconMap = { "ico.Win10": '<i class="fab fa-windows"></i>', "ico.Ubuntu": '<i class="fab fa-ubuntu"></i>', "ico.Whatsapp": '<i class="fab fa-whatsapp"></i>', "ico.Instagram": '<i class="fab fa-instagram"></i>', "ico.Google": '<i class="fab fa-google"></i>', "ico.Microsoft": '<i class="fab fa-microsoft"></i>', "ico.Twitter": '<i class="fab fa-twitter"></i>', "ico.Facebook": '<i class="fab fa-facebook"></i>', } var userText = "ico.Win10 + S"; var keysArray = userText.split("+").filter(e => String(e)); keysArray = $.map(keysArray, $.trim); for (let i = 0; i < keysArray.length; i++) { if (iconMap[keysArray[i]] != undefined) { keysArray[i] = keysArray[i].replace(keysArray[i], iconMap[keysArray[i]]) } } console.log(keysArray)
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

Pero si mi variable de texto de userText cambia a algo como "ico.Win10 Windows + S";

Obtengo la salida ["ico.Win10 Windows", "S"] en lugar de ["<i class="fab fa-windows"></i> Windows", "S"]

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

0

El duplicado que se marcó para su publicación anterior indicaba el uso de expresiones regulares para el reemplazo, lo que permite apuntar a patrones específicos dentro de una cadena.

Puede aplicar esto a su caso de uso, buscando subcadenas que comiencen con ico. . Para permitir la posibilidad de que pueda haber más de una subcadena de este tipo, el fragmento a continuación usa matchAll() para iterar sobre todas las coincidencias y reemplazar si hay una propiedad correspondiente en la búsqueda de iconMap .

 const iconMap = { 'ico.Win10': '<i class="fab fa-windows"></i>', 'ico.Ubuntu': '<i class="fab fa-ubuntu"></i>', 'ico.Whatsapp': '<i class="fab fa-whatsapp"></i>', 'ico.Instagram': '<i class="fab fa-instagram"></i>', 'ico.Google': '<i class="fab fa-google"></i>', 'ico.Microsoft': '<i class="fab fa-microsoft"></i>', 'ico.Twitter': '<i class="fab fa-twitter"></i>', 'ico.Facebook': '<i class="fab fa-facebook"></i>', }; const replaceIco = (str) => { for (const [, ico] of str.matchAll(/(ico\..*?)\s/g)) { str = str.replace(ico, iconMap[ico] ?? ico); } return str; }; const userText = 'ico.Whatsapp WhatsApp ico.Win10 Windows + S'; const keysArray = userText.split('+').map(replaceIco); console.log(keysArray);

Si prefiere no usar/aprender RegExp, puede lograr lo mismo usando métodos de matriz dividiendo la cadena pasada en cada ' ' y mapeando sobre cada palabra que devuelve los valores de la tabla de búsqueda si existen.

 const iconMap = { 'ico.Win10': '<i class="fab fa-windows"></i>', 'ico.Ubuntu': '<i class="fab fa-ubuntu"></i>', 'ico.Whatsapp': '<i class="fab fa-whatsapp"></i>', 'ico.Instagram': '<i class="fab fa-instagram"></i>', 'ico.Google': '<i class="fab fa-google"></i>', 'ico.Microsoft': '<i class="fab fa-microsoft"></i>', 'ico.Twitter': '<i class="fab fa-twitter"></i>', 'ico.Facebook': '<i class="fab fa-facebook"></i>', }; const replaceIco = (str) => { return str .split(' ') .map((s) => iconMap[s] ?? s) .join(' '); }; const userText = 'ico.Whatsapp WhatsApp ico.Win10 Windows + S'; const keysArray = userText.split('+').map(replaceIco); console.log(keysArray);

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!