Is there a way to reverse the formatting by Intl.NumberFormat in JavaScript(有没有办法在 JavaScript 中通过 Intl.NumberFormat 反转格式)
问题描述
The Intl.NumberFormat (see Mozilla's doc) provides a nice way in Javascript to format numbers into a current locale`s version like this:
new Intl.NumberFormat().format(3400); // returns "3.400" for German locale
But I couldn't find a way to reverse this formatting. Is there something like
new Intl.NumberFormat().unformat("3.400"); // returns 3400 for German locale
Thanks for any help.
I have found a workaround:
/**
* 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), '.')
);
}
Using it like this:
parseLocaleNumber('3.400,5', 'de');
parseLocaleNumber('3.400,5'); // or if you have German locale settings
// results in: 3400.5
Not the nicest solution but it works :-)
If anyone knows a better way of achieving this, feel free to post your answer.
Update
- Wrapped in a complete reusable function
- Using the regex class
p{Number}to extract the separator. So that it also works with non-arabic digits. - Using number with 5 places to support languages where numbers are separated at every fourth digit.
这篇关于有没有办法在 JavaScript 中通过 Intl.NumberFormat 反转格式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:有没有办法在 JavaScript 中通过 Intl.NumberFormat 反转
基础教程推荐
- npm start 错误与 create-react-app 2022-01-01
- Bootstrap 模态出现在背景下 2022-01-01
- Bokeh Div文本对齐 2022-01-01
- 如何添加到目前为止的天数? 2022-01-01
- 在 contenteditable 中精确拖放 2022-01-01
- Fabric JS绘制具有活动形状的多边形 2022-01-01
- fetch 是否支持原生多文件上传? 2022-01-01
- 即使用户允许,Gmail 也会隐藏外部电子邮件图片 2022-01-01
- 检查 HTML5 拖放文件类型 2022-01-01
- 原生拖动事件后如何获取 mouseup 事件? 2022-01-01
