我正在使用Globalize for jQuery,我正在寻找一种解决方案,将货币数转换为没有货币符号的数字。
Globalize有一个函数Globalize.currencyParser,但在v1.1.1
它仍然是空的,所以我尝试用
Globalize(“fr”).numberParser()(“-10 000,99 €”)
但它变为10000,99
而不是-10000,99
。
在函数numberParse
中if ( prefix === negativePrefix && suffix === negativeSuffix ) { number *= -1; }
该数字不会转换为负数,因为后缀!== negativeSuffix。所以,我决定用正则表达式解决我的问题
( /^([^0-9]*)(([0-9,\'\٬\.\s]*[0-9]+)(,٫\.[0-9]+)?)([^0-9]*)$/ )
但我更喜欢使用Globalize.currencyParser的解决方案。想法?
答案 0 :(得分:0)
理想的解决方案是使用.currencyParser()
,但尚未实现Globalize:#364(空fn绝对是一个错误)。如果您想提供解析器,欢迎使用它,我可以将它合并到库中。
与此同时,遗憾的是除了使用黑客之外没什么可做的。一种方法是从String中修剪欧元货币,然后解析结果数字。
// Ugly hack
Globalize('fr').parseNumber('-1 000 000,00 €'.replace(/€/, '').trim())
// > -1000000
```
答案 1 :(得分:0)
我在我的.js文件中写了一个小函数
function getNumberAndCurrency(number_with_currency) {
var numberNumberRe = ( /^([^0-9]*)(([0-9,\'\٬\.\s]*[0-9]+)(,٫\.[0-9]+)?)([^0-9]*)$/ );
var match_array = numberNumberRe.exec(number_with_currency);
if ('' == match_array[5]) {
if ('-' == match_array[1].charAt(0)) {
var currency = match_array[1].slice(1);
var number = '-' + match_array[2];
} else {
var currency = match_array[1];
var number = match_array[2];
}
} else {
var currency = match_array[5];
var number = match_array[1] + match_array[2];
}
return [number, currency];
}
这项工作很好用“en”,“de”和“fr”语言环境,有几种货币