Добавить запятую к числам каждые три цифры
Как я могу форматировать числа с помощью разделителя запятой каждые три цифры с помощью jQuery?
например:
╔═══════════╦═════════════╗
║ Input ║ Output ║
╠═══════════╬═════════════╣
║ 298 ║ 298 ║
║ 2984 ║ 2,984 ║
║ 297312984 ║ 297,312,984 ║
╚═══════════╩═════════════╝
9 ответов:
@Paul Creasey имел самое простое решение в качестве регулярного выражения, но здесь это как простой плагин jQuery:
$.fn.digits = function(){ return this.each(function(){ $(this).text( $(this).text().replace(/(\d)(?=(\d\d\d)+(?!\d))/g, ",") ); }) }затем вы можете использовать его следующим образом:
$("span.numbers").digits();
что-то вроде этого, если вы находитесь в регулярном выражении, не уверены в точном синтаксисе для замены tho!
MyNumberAsString.replace(/(\d)(?=(\d\d\d)+(?!\d))/g, ",");
вы могли бы использовать
Number.toLocaleString():var number = 1557564534; document.body.innerHTML = number.toLocaleString(); // 1,557,564,534
вы могли бы попробовать NumberFormatter.
$(this).format({format:"#,###.00", locale:"us"});Он также поддерживает различные локали, в том числе, конечно, нас.
вот очень упрощенный пример того, как использовать его:
<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>выход:
1,000 2,000,000
Это не jQuery, но он работает для меня. Взято из этот сайт.
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, '' + ',' + ''); } return x1 + x2; }
более подробное решение
ядро это
replaceзвонок. До сих пор я не думаю, что любое из предложенных решений обрабатывает все следующие случаи:
- целых чисел:
1000 => '1,000'- строки:
'1000' => '1,000'- для строк:
- сохраняет нули после запятой:
10000.00 => '10,000.00'- отбрасывает ведущие нули перед десятичным числом:
'01000.00 => '1,000.00'- не добавляет запятые после запятой:
'1000.00000' => '1,000.00000'- сохраняет лидирующие
-или+:'-1000.0000' => '-1,000.000'- возвращает немодифицированные строки, содержащие не цифры:
'1000k' => '1000k'следующая функция выполняет все вышеперечисленное.
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)); } ); };вы можете использовать его в плагине jQuery следующим образом:
$.fn.addCommas = function() { $(this).each(function(){ $(this).text(addCommas($(this).text())); }); };
использовать номер функции();
$(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 />
2016 ответ:
Javascript имеет эту функцию, поэтому нет необходимости в Jquery.
yournumber.toLocaleString("en");
вы также можете посмотреть на jQuery FormatCurrency плагин (из которых я являюсь автором); он также поддерживает несколько локалей, но может иметь накладные расходы на поддержку валюты, которая вам не нужна.
$(this).formatCurrency({ symbol: '', roundToDecimalPlace: 0 });
Comments