texto - jquery is not
Agregue coma a los números cada tres dígitos (9)
¿Cómo puedo formatear números usando un separador de coma cada tres dígitos usando jQuery?
Por ejemplo:
╔═══════════╦═════════════╗
║ Input ║ Output ║
╠═══════════╬═════════════╣
║ 298 ║ 298 ║
║ 2984 ║ 2,984 ║
║ 297312984 ║ 297,312,984 ║
╚═══════════╩═════════════╝
Una solución más completa
El núcleo de esto es la llamada de replace
. Hasta el momento, no creo que ninguna de las soluciones propuestas maneje todos los casos siguientes:
- Enteros:
1000 => ''1,000''
- Cadenas:
''1000'' => ''1,000''
- Para cuerdas:
- Conserva los ceros después del decimal:
10000.00 => ''10,000.00''
- Descarta los ceros a la izquierda antes del decimal:
''01000.00 => ''1,000.00''
- No agrega comas después del decimal:
''1000.00000'' => ''1,000.00000''
- Conservas principales
-
o+
:''-1000.0000'' => ''-1,000.000''
- Devuelve, sin modificaciones, cadenas que contienen no dígitos:
''1000k'' => ''1000k''
- Conserva los ceros después del decimal:
La siguiente función hace todo lo anterior.
addCommas = function(input){
// If the regex doesn''t match, `replace` returns the string unmodified
return (input.toString()).replace(
// Each parentheses group (or ''capture'') in this regex becomes an argument
// to the function; in this case, every argument after ''match''
/^([-+]?)(0?)(/d+)(.?)(/d+)$/g, function(match, sign, zeros, before, decimal, after) {
// Less obtrusive than adding ''reverse'' method on all strings
var reverseString = function(string) { return string.split('''').reverse().join(''''); };
// Insert commas every three characters from the right
var insertCommas = function(string) {
// Reverse, because it''s easier to do things from the left
var reversed = reverseString(string);
// Add commas every three characters
var reversedWithCommas = reversed.match(/.{1,3}/g).join('','');
// Reverse again (back to normal)
return reverseString(reversedWithCommas);
};
// If there was no decimal, the last capture grabs the final digit, so
// we have to put it back together with the ''before'' substring
return sign + (decimal ? insertCommas(before) + decimal + after : insertCommas(before + after));
}
);
};
Podrías usarlo en un plugin jQuery como este:
$.fn.addCommas = function() {
$(this).each(function(){
$(this).text(addCommas($(this).text()));
});
};
@Paul Creasey tenía la solución más simple como la expresión regular, pero aquí es como un simple complemento jQuery:
$.fn.digits = function(){
return this.each(function(){
$(this).text( $(this).text().replace(/(/d)(?=(/d/d/d)+(?!/d))/g, "$1,") );
})
}
Podrías usarlo así:
$("span.numbers").digits();
Algo así si le gusta la expresión regular, no está seguro de la sintaxis exacta para reemplazarla.
MyNumberAsString.replace(/(/d)(?=(/d/d/d)+(?!/d))/g, "$1,");
Esto no es jQuery, pero funciona para mí. Tomado de este sitio .
function addCommas(nStr) {
nStr += '''';
x = nStr.split(''.'');
x1 = x[0];
x2 = x.length > 1 ? ''.'' + x[1] : '''';
var rgx = /(/d+)(/d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, ''$1'' + '','' + ''$2'');
}
return x1 + x2;
}
Podría usar Number.toLocaleString()
:
var number = 1557564534;
document.body.innerHTML = number.toLocaleString();
// 1,557,564,534
Puedes probar NumberFormatter .
$(this).format({format:"#,###.00", locale:"us"});
También admite diferentes configuraciones regionales, incluido, por supuesto, EE. UU.
Aquí hay un ejemplo muy simplificado de cómo usarlo:
<html>
<head>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="jquery.numberformatter.js"></script>
<script>
$(document).ready(function() {
$(".numbers").each(function() {
$(this).format({format:"#,###", locale:"us"});
});
});
</script>
</head>
<body>
<div class="numbers">1000</div>
<div class="numbers">2000000</div>
</body>
</html>
Salida:
1,000
2,000,000
También puede consultar el plugin jQuery FormatCurrency (del que soy el autor); también tiene soporte para múltiples configuraciones regionales, pero puede tener la sobrecarga del soporte de divisa que no necesita.
$(this).formatCurrency({ symbol: '''', roundToDecimalPlace: 0 });
Use la función Número ();
$(function() {
var price1 = 1000;
var price2 = 500000;
var price3 = 15245000;
$("span#s1").html(Number(price1).toLocaleString(''en''));
$("span#s2").html(Number(price2).toLocaleString(''en''));
$("span#s3").html(Number(price3).toLocaleString(''en''));
console.log(Number(price).toLocaleString(''en''));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<span id="s1"></span><br />
<span id="s2"></span><br />
<span id="s3"></span><br />
Respuesta 2016:
Javascript tiene esta función, por lo que no necesita Jquery.
yournumber.toLocaleString("en");