使用Javascript格式化货币类型
在c中,你可以做到这一点使用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, "$###,#
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,它否决了那些试图帮助他的人。我没有否决,是其他人。。。