Tengo una cadena y quiero que los grupos de números en el interior se inviertan, por ejemplo, "este es el número 123456 y el reverso es 654321" se cambie a "este es el número 654321 y el reverso es 123456". ¿Cómo puedo lograr eso?
Mientras buscaba a través de net, finalmente llegué a esta solución:
function reverseNumberInString(str){ let numbers = str.match(/\d+/g) || []; for(let i = 0 ; i < numbers.length ; i++){ let x = numbers[i].toString().split("").reverse().join(""); let s = str str = s.slice(0,str.search(numbers[i])) + x + s.slice(str.search(numbers[i])+numbers[i].length) } return str }Podría ser interesante:
Todo el problema comenzó con la impresora térmica pos. Tuve que enviarle una cadena de códigos hexadecimales para imprimir, pero en mi idioma (persa/farsi) se imprimiría al revés, así que tuve que invertir la cadena hexadecimal. pero luego los números estarían invertidos (¡y por supuesto las palabras en inglés!) así que invertí los números (y para las letras en inglés simplemente cambie str.match(/\d+/g) a str.match(/\w+/g) ) en lado la cuerda invertida!
Actualizado:
También descubrí que el número decimal también tiene problemas. así que cambié la parte de expresiones regulares a str.match(/[a-zA-Z0-9.،,\/]+/g)