Estoy tratando de asegurarme de que cualquiera de estas combinaciones: siempre mostrará el dígito redondeado sin decimales ni comas. Ejemplo
1,200.00 should output = 1200 12.33 should output = 12 123.34 should output = 123 1,434 should output = 1434 165,33 should output = 165 250.00 should output = 250 259,00 should output = 259Yo he tratado:
var currency = "$1,100.00"; var number = Number(currency.replace(/[^0-9\.]+/g,""));Y mi último:
var priceTotal = parseFloat(price.replace( /[^\d\.]*/g, ''));Pero esto no funciona bien con coma. Siempre debe mostrarse sin coma, punto o los últimos dígitos.
/[^0-9\.]/g regex para reemplazar comma , use indexOf para encontrar la posición de comma Y use parseInt para convertir esa cadena en un entero .
Por favor, siga el siguiente ejemplo::
var a = '1,200.00'; var b = '12.33'; var c = '123.34'; var d = '1,434'; var e = '165,33'; var f = '250.00'; var g = '259,00'; $(document).ready(function () { parseNumberCustom(a); parseNumberCustom(b); parseNumberCustom(c); parseNumberCustom(d); parseNumberCustom(e); parseNumberCustom(f); parseNumberCustom(g); }); function parseNumberCustom(number_string) { var new_number = parseInt(number_string.indexOf(',') >= 3 ? number_string.split(',')[0] : number_string.replace(/[^0-9\.]/g, '')); console.log('Before==>' + number_string + ', After==>' + new_number); }Mira esto
<html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <script> $(document).ready(function(){ $("#Convert").click(function(){ var currency1 = $("#mode").val() if (currency1.indexOf(",") >= 0 && currency1.indexOf(".") >= 0) { var intvalue =(parseInt(currency1.replace(/[^0-9\.]/g, ''))); alert(intvalue) } if (currency1.indexOf(".") >= 0 && currency1.indexOf(",") < 0) { var intvalue = Math.floor( currency1 ); alert(intvalue) } if (currency1.indexOf(",") >= 0 && currency1.indexOf(".") < 0) { var streetaddress= currency1.substr(0, currency1.indexOf(',')); alert(streetaddress) } }) }); </script> <body> <div class="table-responsive container"> Enter Value: <input type=Text id="mode" text="Switch Mode" class="Form-control" value="" > <input type=Button id="Convert" text="Switch Mode" class="btn btn-primary" value="Convert" > </div> </body> </html>Use el método Math.round para redondear un número o use el método Math.floor en caso de que necesite el valor más bajo.
var number = Math.round( currency // convert the comma seperated decimal part to dot seperated .replace(/\D(\d{2})$/, '.$1') // replace all non-digit dot characters .replace(/[^\d.]+/g, '') ); ['1,200.00', '12,33', '123.34', '1,434', '$1,100.16'].forEach(function(currency) { var number = Math.round(currency.replace(/\D(\d{2})$/, '.$1').replace(/[^\d.]+/g, "")); console.log(currency + ' => ' + number) }) FYI: No hay necesidad de escapar . dentro de la clase de personaje.