2015-10-02 63 views
2

我有字符串“722,311.75”,我想将其转换为数字722,311.75(货币格式)。以下代码不起作用。将字符串转换为货币格式的数字JavaScript

var str = "722,311.75"; 
 
var nr = parseFloat(str, 10).toFixed(2); 
 
console.log(nr); // Returns 722.00

的我怎么能做到这一点任何想法?

+1

只是使用'parseFloat(str.replace(/ [,]/g,“”));' –

+2

“722,311.75”不是有效的数字表示。 'parseFloat'只会看到第一个数字(722),并忽略逗号后的任何内容。另外,在JavaScript中,thre不是一个“货币格式”数字。该数字将为722311.75,然后您可以提供插入逗号的修改后的toString函数。 – Touffy

+0

其他重复:http://stackoverflow.com/questions/4083372/in-javascript-jquery-what-is-the-best-way-to-convert-a-number-with-a-comma-int,和几个其他。 –

回答

6

的字符串传递给parseFloat

如果字符串中包含不止一个,,您可以使用ragex删除,的所有出现替换之前从字符串,

正则表达式/,/将匹配,文字从字符串和g全局标志将正则表达式匹配所有可能的串即所有,从字符串。

var str = "1,722,311.75"; 
 
var nr = parseFloat(str.replace(/,/g, ''), 10).toFixed(2); 
 
document.write(nr);


如果字符串只包含一个,,你可以使用replace用绳子从字符串中删除,

var str = "722,311.75"; 
 
var nr = parseFloat(str.replace(',', ''), 10).toFixed(2); 
 
document.write(nr);

注意replace(',', '')将删除的,只有第一次出现。查看正则表达式方法的第一个代码片段,它将替换所有的事件。

+1

编辑你的第一个例子。这是无效的。会有问题,如果'str =“5,722,311.75”;' –

+1

@SheraliTurdiyev正确,这就是为什么我已经添加第二个选项的标题'如果字符串包含多个,' – Tushar

+0

@Magus感谢您帮助改善答案,但您的编辑覆盖我的更改,所以必须回滚 – Tushar