无法在nodejs中使用toLocaleString

时间:2018-12-14 19:54:50

标签: javascript node.js express

我创建了一个util lib来格式化数字。

这是格式lib

module.exports = {
  format: function (number) {
    let value = number.toString()
    let teste = value.slice(0, -2) + '.' + value.slice(-2)
    let newvalue = Number(teste)
    return newvalue.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' })
  }
}

在我的文件中导入它以供使用:

var format = require('../utils/format').format
let number = format(31231)

但是它没有返回正确的格式R$2.312,31 返回R$2,312.31

如果我在JsFiddle中运行,它的工作将按预期进行...不知道会发生什么错误

1 个答案:

答案 0 :(得分:1)

如评论中所述,它看起来像bug in node-您可以使用

进行更正

const reformat = s => s.replace(/[,.]/g, x => ({'.':',', ',':'.'})[x]);

console.log(reformat('R$2,312.31'))

您可能还想在替换物上放一个警卫:

s => /\.\d{2}$/.test(s) ? s.replace(/[,.]/g, x => ({'.':',', ',':'.'})[x]) : s

像这样在您的lib中使用它:

module.exports = {
  format: function (number) {
    let value = number.toString()
    let teste = value.slice(0, -2) + '.' + value.slice(-2)
    let newvalue = Number(teste)
    const reformat = s => /\.\d{2}$/.test(s) ? s.replace(/[,.]/g, x => ({'.':',', ',':'.'})[x]) : s
    return reformat(newvalue.toLocaleString('pt-BR', { style: 'currency', currency: 'BRL' }))
  }
}