Intl.NumberFormat 返回数字和货币符号通过间距划分的结果
Posted
技术标签:
【中文标题】Intl.NumberFormat 返回数字和货币符号通过间距划分的结果【英文标题】:Intl.NumberFormat returns a result where number and currency symbol are divided through spacing 【发布时间】:2021-05-26 18:52:18 【问题描述】:我刚刚为我的 vue 应用添加了一个过滤器,它应该将值格式化为欧元(德语格式)的货币。
这是函数:
app.config.globalProperties.$filters =
currency(value)
return new Intl.NumberFormat(process.env.MIX_LOCALE, style: 'currency', currency: 'EUR' ).format(value);
,
如果我现在做类似的事情
$filters.currency(17.85)
我得到这个结果:17,85 €
如您所见,值和货币符号通过空格分开。这与我们在德国看到的不太一样,我们期待17,85€
。
由于我在 Intl.NumberFormat
的文档中没有发现任何有用的信息,我想知道 Intl.NumberFormat
是否可以删除空间。
【问题讨论】:
【参考方案1】:正如您在此 ticket here 中看到的,该问题已为 Intl 所知,并且仍然存在。
你可以做的是this。
【讨论】:
【参考方案2】:我的第一反应是,为什么不replace()
?然后我看到了另一个答案的链接。然后我试了一下,正则表达式不起作用,空间仍然存在。所以这是一个修复错误的有效替换。
app.config.globalProperties.$filters =
currency(value)
return new Intl.NumberFormat(
process.env.MIX_LOCALE,
style: 'currency', currency: 'EUR')
.format(value).replace(/\s/g,'');
可测试的sn-p
console.log(new Intl.NumberFormat('de-DE', style: 'currency', currency: 'EUR' ).format(1234567).replace(/\s/g,''));
【讨论】:
以上是关于Intl.NumberFormat 返回数字和货币符号通过间距划分的结果的主要内容,如果未能解决你的问题,请参考以下文章
使用不带货币符号的 Intl.NumberFormat 进行货币格式化
如何确保 Intl.NumberFormat 在使用同一国家/地区时不显示货币代码?