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

143
Vistas
xRegExp Replace expression
inputArray = ["z","d"];
inputArray = ["د","ذ"];
function trans(stri){
  inputArray.forEach((value, i) => {
    var next = i + 1;
    a1 = inputArray[i];
    a2 = outputArray[i];
    regex = new XRegExp(a1, "g"); 
    stri = XRegExp.replace(stri, regex, a2, ["all"])
    return stri;
});
}
console.log(trans("dzzd"))

I wanna translate from latin characters to arabic characters, how to use {{Arabic}}?, and I Very new to RegExp or even XRegExp, So how basically i do it? Also I'm very very sorry if im Lack of Experience..

Expected Output = "دذذد"

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

You can do all the replacements in one pass, making an alternation out of inputArray and using a replacement function to return the appropriate character from outputArray on a match:

function trans(str, from, to) {
  return str.replace(new RegExp(`${from.join('|')}`, 'g'), function(m) {
    return to[from.indexOf(m)];
  });
}

inputArray = ["z", "d"];
outputArray = ["ذ", "د"];
console.log(trans('dzzd', inputArray, outputArray))

Note that if from might contain overlapping values (for example ab and a) you need to sort from and to by the length of the strings in from descending before using them. You can do that with this code:

// create an array of indexes
ids = Array.from({length : from.length}, (_, i) => i)
// sort the indexes by the length of the corresponding string in `from`
ids.sort((a, b) => from[b].length - from[a].length)
// now map from and to to the new order
from = from.map((_, i) => from[ids[i]])
to = to.map((_, i) => to[ids[i]])

This ensures that the regex always matches the longest sequence by preference (since it will come first in the alternation).

You could either insert into the trans function, for example:

function trans(str, from, to) {
  ids = Array.from({ length: from.length }, (_, i) => i)
  ids.sort((a, b) => from[b].length - from[a].length)
  from = from.map((_, i) => from[ids[i]])
  to = to.map((_, i) => to[ids[i]])
  return str.replace(new RegExp(`${from.join('|')}`, 'g'), function(m) {
    return to[from.indexOf(m)];
  });
}

inputArray = ["zz", "d"];
outputArray = ["ذ", "د"];
console.log(trans('dzzd', inputArray, outputArray))

or use it on inputArray and outputArray before you call trans:

function trans(str, from, to) {
  return str.replace(new RegExp(`${from.join('|')}`, 'g'), function(m) {
    return to[from.indexOf(m)];
  });
}

inputArray = ["zz", "d"];
outputArray = ["ذ", "د"];
ids = Array.from({ length: inputArray.length }, (_, i) => i)
ids.sort((a, b) => inputArray[b].length - inputArray[a].length)
inputArray = inputArray.map((_, i) => inputArray[ids[i]])
outputArray = outputArray.map((_, i) => outputArray[ids[i]])

console.log(trans('dzzd', inputArray, outputArray))

about 4 years ago · Juan Pablo Isaza 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