gpt4 book ai didi

javascript - 有没有办法在 JavaScript 中反转 Intl.NumberFormat 的格式

转载 作者:行者123 更新时间:2023-11-28 06:00:40 28 4
gpt4 key购买 nike

Intl.NumberFormat(请参阅 Mozilla's doc )在 Javascript 中提供了一种将数字格式化为当前语言环境版本的好方法,如下所示:

new Intl.NumberFormat().format(3400); // returns "3.400" for German locale

但我找不到反转这种格式的方法。有没有类似的东西

new Intl.NumberFormat().unformat("3.400"); // returns 3400 for German locale

感谢您的帮助。

最佳答案

我找到了解决方法:

/**
* Parse a localized number to a float.
* @param {string} stringNumber - the localized number
* @param {string} locale - [optional] the locale that the number is represented in. Omit this parameter to use the current locale.
*/
function parseLocaleNumber(stringNumber, locale) {
var thousandSeparator = Intl.NumberFormat(locale).format(11111).replace(/\p{Number}/gu, '');
var decimalSeparator = Intl.NumberFormat(locale).format(1.1).replace(/\p{Number}/gu, '');

return parseFloat(stringNumber
.replace(new RegExp('\\' + thousandSeparator, 'g'), '')
.replace(new RegExp('\\' + decimalSeparator), '.')
);
}

像这样使用它:

parseLocaleNumber('3.400,5', 'de');
parseLocaleNumber('3.400,5'); // or if you have German locale settings
// results in: 3400.5

不是最好的解决方案,但它有效:-)

如果有人知道实现此目标的更好方法,请随时发布您的答案。

更新

  • 封装在一个完整的可重用函数中
  • 使用正则表达式类\p{Number} 提取分隔符。这样它也适用于非阿拉伯数字。
  • 使用 5 位数字来支持数字以每四位数字分隔的语言。

关于javascript - 有没有办法在 JavaScript 中反转 Intl.NumberFormat 的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37294632/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com