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

$1,100.00→1100.00

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


当前回答

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

国际号码格式化程序

其他回答

删除所有非点/数字:

var currency = "-$4,400.50";
var number = Number(currency.replace(/[^0-9.-]+/g,""));

你可以试试这个

var str = “$1,112.12”; str = str.replace(“,”, “”); str = str.replace(“$”, “”); console.log(parseFloat(str));

简单地说

Number(currency.replace(/[^0-9-]+/g,""))/100;

适用于所有货币和地区。替换所有非数字字符(您可以有€50.000,00或$50,000.00)输入必须有2位小数

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);

我知道这是一个老问题,但我想提供一个额外的选项。

jQuery Globalize提供了将特定于区域性的格式解析为float的能力。

https://github.com/jquery/globalize

给定字符串"$13,042.00",Globalize设置为en-US:

Globalize.culture("en-US");

你可以像这样解析float值:

var result = Globalize.parseFloat(Globalize.format("$13,042.00", "c"));

这将给你:

13042.00

并且允许你与其他文化一起工作。