Не могу использовать toLocaleString в nodejs - PullRequest
0 голосов
/ 14 декабря 2018

Я создал утилиту 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 голосов
/ 14 декабря 2018

Как уже упоминалось в комментариях, это похоже на ошибку в узле - вы можете исправить с помощью

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

Используйте его в своей библиотеке следующим образом:

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' }))
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...