Javascript千位分隔符/字符串格式

Javascript千位分隔符/字符串格式,javascript,string,numbers,format,Javascript,String,Numbers,Format,Javascript中是否有格式化数字和字符串的功能 我正在寻找一种为字符串或数字设置千位分隔符的方法。。。 (如c#中的String.Format)更新(7年后) 以下原始答案中引用的参考是错误的。这有一个内置函数,这正是下面建议的:toLocaleString 因此,您可以: (1234567.89).toLocaleString('en') // for numeric input parseFloat("1234567.89").toLocaleString('

Javascript中是否有格式化数字和字符串的功能

我正在寻找一种为字符串或数字设置千位分隔符的方法。。。 (如c#中的String.Format)

更新(7年后)

以下原始答案中引用的参考是错误的。这有一个内置函数,这正是下面建议的:
toLocaleString

因此,您可以:

(1234567.89).toLocaleString('en')              // for numeric input
parseFloat("1234567.89").toLocaleString('en')  // for string input
下面实现的函数也可以工作,但不是必需的

(我想也许我会幸运地发现,这在2010年是必要的,但不是。根据这一点,自ECMAScript第三版[1999]以来,toLocaleString一直是标准的一部分,我相信这意味着它早在IE 5.5就得到了支持。)


原始答案

据介绍,没有一个内置函数可以将逗号添加到数字中。但该页面包含了如何自己编写代码的示例:

function addCommas(nStr) {
    nStr += '';
    var x = nStr.split('.');
    var x1 = x[0];
    var x2 = x.length > 1 ? '.' + x[1] : '';
    var rgx = /(\d+)(\d{3})/;
    while (rgx.test(x1)) {
            x1 = x1.replace(rgx, '$1' + ',' + '$2');
    }
    return x1 + x2;
}
编辑: 若要转到另一种方式(将带逗号的字符串转换为数字),可以执行以下操作:

parseFloat("1,234,567.89".replace(/,/g,''))

js有一个函数来完成这个任务,叫做。如果您熟悉PHP,它可以工作。

如果要本地化千位分隔符、分隔符和十进制分隔符,请执行以下操作:

// --> numObj.toLocaleString( [locales [, options] ] )
parseInt( number ).toLocaleString();
您可以使用几个选项(甚至是具有回退功能的区域设置):

number=123456.7089;
结果=parseInt(number).toLocalString()+“
”; 结果+=number.toLocaleString('de')+“
”; 结果+=number.toLocaleString('ar EG')+“
”; 结果+=number.tolocalString('ja-JP',{ 风格:“货币”, 货币:日元, 当前显示:“符号”, 使用分组:正确 })+“
”; 结果+=number.toLocaleString(['jav','en'],{ localeMatcher:“查找”, 样式:“十进制”, 最小整数位数:2, 最小分数位数:2, 最大分数位数:3, 最小有效位数:2, 最大有效位数:3 })+“
”; var el=document.getElementById('result'); el.innerHTML=结果
根据ECMAScript 2018的更改,使用后视支持进行更新。
为了向后兼容,请向下滚动查看原始解决方案

可以使用正则表达式—在处理以字符串形式存储的大数字时非常有用

const format=num=>

字符串(num).replace(/(?有一个很好的jQuery数字插件:

它允许您以喜欢的格式更改任何数字,并提供十进制数字选项和十进制和千位数分隔符:

$.number(12345.4556, 2);          // -> 12,345.46
$.number(12345.4556, 3, ',', ' ') // -> 12 345,456
您可以直接在输入字段中使用它,这样更好,使用与上面相同的选项:

$("input").number(true, 2);
或者,您可以使用选择器应用于整个DOM元素集:

$('span.number').number(true, 2);

我不喜欢这里的任何答案,所以我创建了一个适合我的函数。只是想分享一下,以防其他人发现它有用

function getFormattedCurrency(num) {
    num = num.toFixed(2)
    var cents = (num - Math.floor(num)).toFixed(2);
    return Math.floor(num).toLocaleString() + '.' + cents.split('.')[1];
}
我用这个:

function numberWithCommas(number) {
    return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
}

来源:

你需要做的就是:


您可以使用javascript。下面是代码,它只接受数字和一个点

下面是javascript


函数格式货币(ctrl){
//检查是否按了箭头键-我们希望允许使用箭头键在文本框周围导航
如果(event.keyCode==37 | | event.keyCode==38 | | event.keyCode==39 | | event.keyCode==40){
返回;
}
var-val=ctrl.value;
val=val.replace(/,/g,“”)
ctrl.value=“”;
val+='';
x=val.split('.');
x1=x[0];
x2=x.长度>1?'.+x[1]:'';
var rgx=/(\d+)(\d{3})/;
while(rgx.测试(x1)){
x1=x1.替换(rgx,'$1'+','+'$2');
}
ctrl.value=x1+x2;
}
函数CheckNumeric(){
返回event.keyCode>=48&&event.keyCode
number=123456.7089;
结果=parseInt(number).toLocalString()+“
”; 结果=数字。toLocaleString('pt BR')+“
”; var el=document.getElementById('result'); el.innerHTML=结果;

你可以在这里查阅参考资料

用于反应的溶液组合

  let converter = Intl.NumberFormat();
  let salary =  monthlySalary.replace(/,/g,'')
  console.log(converter.format(salary))

  this.setState({
    monthlySalary: converter.format(salary)
  })
}

handleOnChangeMonthlySalary(1000)```

您可以使用ngx格式字段。它是一个指令,用于格式化将显示在视图中的输入值。它不会操作将保存在后端的输入值。请参阅链接

例如:

component.html:

<input type="text" formControlName="currency" [appFormatFields]="CURRENCY"
(change)="onChangeCurrency()">

component.ts

onChangeCurrency() {
this.currency.patchValue(this.currency.value);
}
component.html:
组件技术
onChangeCurrency(){
this.currency.patchValue(this.currency.value);
}

要查看演示:!

您可以使用以下功能:

函数格式(数字,小数=2,小数分隔符='',千位分隔符=','){
const roundedNumber=固定数(小数);
让integerPart=“”,
分馏部分=“”;
如果(小数==0){
整数部分=舍入数;
小数分隔符=“”;
}否则{
设numberParts=roundedNumber.split('.');
整数部分=数字部分[0];
分数部分=数字部分[1];
}
integerPart=integerPart.replace(/(\d)(?=(\d{3})+(?!\d))/g,`1${0000sParator});
返回`${integerPart}${decimalSeparator}${secretialpart}`;
}
//举例
设min=1556454.0001;
设max=15556982.9999;
console.time(“数字格式”);
for(设i=0;i<15;i++){
让randomNumber=Math.random()*(max-min)+min;
设formatted=format(随机数,4,,,,,,,,;//格式化数
log('number:',randomNumber';格式化:',格式化);
}

console.timeEnd('number format');
我想你会在那里找到你需要的:)
如何在JavaScript中用逗号作为千位分隔符打印一个数字:
:非常感谢//但是我如何转换这个字符串(使用
<script >

            function FormatCurrency(ctrl) {
                //Check if arrow keys are pressed - we want to allow navigation around textbox using arrow keys
                if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) {
                    return;
                }

                var val = ctrl.value;

                val = val.replace(/,/g, "")
                ctrl.value = "";
                val += '';
                x = val.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');
                }

                ctrl.value = x1 + x2;
            }

            function CheckNumeric() {
                return event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 46;
            }

  </script>
<input type="text" onkeypress="return CheckNumeric()" onkeyup="FormatCurrency(this)" />
number = 123456.7089;
result = parseInt( number ).toLocaleString() + "<br>";
result = number.toLocaleString( 'pt-BR' ) + "<br>";

var el = document.getElementById( 'result' );
el.innerHTML = result;
var number = 35002343;

console.log(number.toLocaleString());
  let converter = Intl.NumberFormat();
  let salary =  monthlySalary.replace(/,/g,'')
  console.log(converter.format(salary))

  this.setState({
    monthlySalary: converter.format(salary)
  })
}

handleOnChangeMonthlySalary(1000)```
component.html:

<input type="text" formControlName="currency" [appFormatFields]="CURRENCY"
(change)="onChangeCurrency()">

component.ts

onChangeCurrency() {
this.currency.patchValue(this.currency.value);
}