Tengo una pregunta simple, me gustaría reemplazar puntos por comas y comas por puntos en una cadena, ejemplo:
var example1 = "10.499,99" // What I have var result1 = "10,499.49" // What I need var example2 = "99.999.999.999,99" // What I have var result2 = "99,999,999,999.99" // What I needYa intenté usar este reemplazo:
value.replace(/,/g, '.')Pero solo cambia todas las comas a puntos.
Alguna idea ?
No puedes hacerlo al mismo tiempo. Si usa la función de reemplazo para cambiarla de punto (.) -> coma (,) obtendrá su nueva cadena donde una coma se reemplaza por un punto. Pero cuando vuelva a intentar hacer viceversa, cada coma será reemplazada por un punto.
Entonces, lo que puede hacer es reemplazar la coma con una cadena/símbolo diferente, algo así como replace(/,/g , "__") y luego reemplazar los puntos con la misma expresión que está usando arriba replace(/\./g, ',') y que reemplacen esas nuevas cadenas/(__) en nuestro ejemplo por punto(.) replace(/__/g, '.')
var example2 = "99.999.999.999,99" example2.replace(/,/g , "__").replace(/\./g, ',').replace(/__/g, '.') // salida: '99,999,999,999.99'
Codificación feliz
Utilice la variante de la función replaceAll que toma una función como segundo parámetro. Úselo para reemplazar todas las apariciones de punto o coma. La función elegirá reemplazar los puntos con comas y las comas con puntos.
function switchDotsAndCommas(s) { function switcher(match) { // Switch dot with comma and vice versa return (match == ',') ? '.' : ','; } // Replace all occurrences of either dot or comma. // Use function switcher to decide what to replace them with. return s.replaceAll(/\.|\,/g, switcher); } console.log(switchDotsAndCommas('10.499,99')); console.log(switchDotsAndCommas('99,999,999,999.99'));Usar
value.replace(".", ",");