我有一个文本框,其中将有一个货币字符串,然后我需要将该字符串转换为double来执行一些操作。

$1,100.00→1100.00

这需要发生在所有客户端。我别无选择,只能将货币字符串作为货币字符串作为输入,但需要将其强制转换/转换为double以允许一些数学操作。


当前回答

let thousands_seps = '.';
let decimal_sep = ',';

let sanitizeValue = "R$ 2.530,55".replace(thousands_seps,'')
                         .replace(decimal_sep,'.')
                         .replace(/[^0-9.-]+/, '');

// Converting to float
// Result 2530.55
let stringToFloat = parseFloat(sanitizeValue);


// Formatting for currency: "R$ 2.530,55"
// BRL in this case
let floatTocurrency = Number(stringToFloat).toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'});

// Output
console.log(stringToFloat, floatTocurrency);

其他回答

这是一个简单的函数

函数getNumberFromCurrency(currency) { 返回(currency.replace数量(/,美元/ g, ")) } console.log(getNumberFromCurrency('$1,000,000.99')) // 1000000.99

我知道你已经找到了解决你的问题的方法,我只是想建议你看看以下更广泛的jQuery国际数字格式插件:

国际号码格式化程序

对于使用Quethzel Diaz提到的“,”分隔符的货币

货币是巴西。

var currency_br = "R$ 1.343,45";
currency_br = currency_br.replace('.', "").replace(',', '.');
var number_formated = Number(currency_br.replace(/[^0-9.-]+/g,""));

这个函数应该适用于任何语言环境和货币设置:

function getNumPrice(price, decimalpoint) {
    var p = price.split(decimalpoint);
    for (var i=0;i<p.length;i++) p[i] = p[i].replace(/\D/g,'');
    return p.join('.');
}

这假设您知道小数点字符(在我的例子中,区域设置来自PHP,所以我用<?PHP返回cms_function_to_get_decimal_point();? >)。

如此令人头痛,如此少地考虑其他文化……

下面是各位:

let floatPrice = parseFloat(price.replace(/(,|\.)([0-9]{3})/g,'$2').replace(/(,|\.)/,'.'));

就这么简单。