Javascript Intl.NumberFormat不';t转换为pt BR语言环境
我有以下代码示例:Javascript Intl.NumberFormat不';t转换为pt BR语言环境,javascript,node.js,Javascript,Node.js,我有以下代码示例: const formCurrency = new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL', minimumFractionDigits: 2 }) 如果输入为: var money = 1000.50 formCurrency.format(money) 预期输出为:R$1.000,50,, 但它却给出了:R$1000.50 是否有人知道如何使用更改,,或使用
const formCurrency = new Intl.NumberFormat('pt-BR', {
style: 'currency',
currency: 'BRL',
minimumFractionDigits: 2
})
如果输入为:
var money = 1000.50
formCurrency.format(money)
预期输出为:R$1.000,50
,,
但它却给出了:R$1000.50
是否有人知道如何使用
更改,
,或使用Intl
以其他方式进行更改
我已经尝试将区域设置更改为de de,但效果不太好。对于其他
样式
而言,R$
会更改,但其余标点符号不会更改 嗯,这不是一个非常理想的解决方案,但应该可以做到这一点
let result = formCurrency.format(money);
result = result.split('.');
result[0] = result[0].replace(',' , '.');
result = result.join(',');
我试着用regex来做,但找不到一个好方法。多亏了阿尔瓦罗,我找到了一个方法。根据MDN和Node文档本身,
Node.js
只支持en US语言环境。因此,为了让它发挥作用,我需要:
- 使用
npm i full icu
- 安装后进行
npm重建
- 在
文件中添加以下代码:package.json
“scripts”:{“start”:“node--icu data dir=node\u modules\\full icu YOURAPP.js”}
- 使用
npm start运行节点应用程序
var number = '1555666.99';
console.log(new Intl.NumberFormat('id').format(number))
生产中需要采取的步骤(类似于@Mael,但变化不大) 1-在package.json中添加依赖项(在提交之前在本地运行
npm i full icu
执行此操作)
2-在节点运行应用程序之前,将路径添加到icu数据目录
,然后编辑start
脚本:
"start": "node --icu-data-dir=./node_modules/full-icu yourEntryFile.js"
只有这些步骤对我起了作用。可以帮助其他人。使用此
function convertMoneyValue(number,element){
number = parseFloat((number/100)).toFixed(2);
element.value = (new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(number));
}
Node.js可能不会捆绑完整的ICU数据库。我想你必须在别处找到它——感谢阿尔瓦罗冈萨雷斯博士找到了这样做的方法。我会用我以前的方式发布。
function convertMoneyValue(number,element){
number = parseFloat((number/100)).toFixed(2);
element.value = (new Intl.NumberFormat('pt-BR', { style: 'currency', currency: 'BRL' }).format(number));
}