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

117
Vistas
Buscando una mejor manera de manipular una cadena numérica que contiene delimitadores

Necesito verificar y manipular una cadena numérica. En este ejemplo, tengo esta cadena "1.59945,5|10" . El "," y "|" son delimitadores, por lo que tiene tres valores separados: 1.59945 , 5 y 10 . Quiero redondear cualquier valor flotante (en este caso, 1.59945 ) a los 2 lugares decimales más cercanos antes de guardar la cadena completa en la base de datos. El resultado debería ser "1.60,5|10" .

Aquí está el JsFiddle

 let values = "1.59945,5|10" const separators = values.split("").filter(v=>{ return v === "," || v=== "|" }) const regex = new RegExp(`,|\\|`); values = values.split(regex).map(value=>{ if (value.includes(".")) { return parseFloat(value).toFixed(2) } else { return value; } }).join(",") separators.forEach(separator=>{ values = values.replace(",",separator) }) console.log(values)

El código parece lograr lo que quiero, pero ¿hay una forma más concisa/mejor de hacerlo?

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

0

Creo que podemos hacer así;

 var string = "1.59945,5|10"; string.match(/\d+\.?\d*/).forEach((s) => { //Adjust your regex accordingly //you can add validation here also string = string.replace(s, parseFloat(s).toFixed(2)); }); console.log(string);
about 4 years ago · Juan Pablo Isaza Denunciar

0

La expresión regular simple con replace puede eliminar todos los bucles

 // If only the first is a float const values = "1.59945,5|10" console.log(values.replace(/^([\d.]+)/, function(n) { return Number(n).toFixed(2); })); // If any of them can be floats const values2 = "1.59945,5.446|10"; console.log(values2.replace(/([\d.]+)/g, function(n) { return n.includes(".") ? Number(n).toFixed(2) : n; }));

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