Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Javascript格式化货币类型_Javascript_C# - Fatal编程技术网

使用Javascript格式化货币类型

使用Javascript格式化货币类型,javascript,c#,Javascript,C#,在c中,你可以做到这一点 String.format(5000, "$###,###,##0.00;-$###,###,##0.00;$0.00") String.format(-5000, "$###,###,##0.00;-$###,###,##0.00;$0.00") 将输出:$5000 或者你可以这样做 String.format(5000, "$###,###,##0.00;-$###,###,##0.00;$0.00") String.format(-5000, "$###,#

在c中,你可以做到这一点

String.format(5000, "$###,###,##0.00;-$###,###,##0.00;$0.00")
String.format(-5000, "$###,###,##0.00;-$###,###,##0.00;$0.00")
将输出:
$5000

或者你可以这样做

String.format(5000, "$###,###,##0.00;-$###,###,##0.00;$0.00")
String.format(-5000, "$###,###,##0.00;-$###,###,##0.00;$0.00")
将输出:
-$5000

如何在Javascript中实现同样的功能

更新:我还需要设置如下货币格式

 String.format(-5000, "###.###.##0.00€;-###,###,##0.00€;0.00€")

这将输出:
5.000,00€
我最终推出了自己的:

app.filter('formatMoney', ['$filter', function ($filter) {
    return function (value, format) {
        var v = format.split(';');
        var index = 2;
        if (value > 0)
            index = 0;
        else if (value < 0)
            index = 1;
        else {
            return v[index];
        }

        var len = v[index].length;
        var fIndex = v[index].indexOf('#');
        var lIndex = v[index].lastIndexOf('0');
        var f = v[index].substring(fIndex, lIndex + 1);
        var symbolFirst = '';
        var symbolLast = '';
        if (lIndex !== len - 1) {
            symbolLast = v[index].substring(len, len - 1);
        }
        if (fIndex > 0) {
            symbolFirst = v[index].substring(0, fIndex);
        }
        var valueStr = value.toFixed(2).toString();
        for (var i = f.length - 1; i > 0 && valueStr.length > 0; i--) {
            var slice = valueStr.slice(-1);
            if (f[i] === '#' || f[i].isNumeric()) {
                valueStr = valueStr.slice(0, -1);
                if (slice.isNumeric()) {
                    f = f.replaceAt(i, slice);
                    var j = valueStr.length - 1;
                    while (j > 0 && !valueStr[j].isNumeric()) {
                        valueStr = valueStr.slice(0, -1);
                        j = j - 1;
                    }
                }
            }
        }
        return symbolFirst + f.substr(f.search(/\d/), f.length - 1) + symbolLast;
    };
}]);
app.filter('formatMoney',['$filter',函数($filter){
返回函数(值、格式){
var v=format.split(“;”);
var指数=2;
如果(值>0)
指数=0;
else if(值<0)
指数=1;
否则{
返回v[索引];
}
var len=v[index]。长度;
var fIndex=v[index].indexOf('#');
var lIndex=v[index].lastIndexOf('0');
var f=v[index]。子字符串(fIndex,lIndex+1);
变量symbolFirst='';
var symbolLast='';
如果(林德克斯!==len-1){
symbolLast=v[index]。子字符串(len,len-1);
}
如果(fIndex>0){
symbolFirst=v[index]。子字符串(0,fIndex);
}
var valueStr=value.toFixed(2.toString();
对于(变量i=f.length-1;i>0&&valueStr.length>0;i--){
var slice=valueStr.slice(-1);
如果(f[i]=='#'| | f[i].isNumeric()){
valueStr=valueStr.slice(0,-1);
if(slice.isNumeric()){
f=f.replaceAt(i,切片);
var j=valueStr.length-1;
而(j>0&!valueStr[j].isNumeric()){
valueStr=valueStr.slice(0,-1);
j=j-1;
}
}
}
}
返回symbolFirst+f.substr(f.search(/\d/),f.length-1)+symbolLast;
};
}]);

您应该考虑使用,这样您的代码就可以依赖于配置设置,如区域设置和货币,而不是定制的字符串格式模式。

const formatCurrency = (num, locale = 'en-US', currency = 'USD', minimumFractionDigits = 2) => {
    if (isNaN(num)) {
        return num;
    }
  return num.toLocaleString(locale, {style: 'currency', currency, minimumFractionDigits});
};

下面是一个例子:上述格式,即$#####,###,#####,###############################,########e!这是我第一次遇到一个OP,它否决了那些试图帮助他的人。我没有否决,是其他人。。。