Javascript 将货币格式转换为数字

Javascript 将货币格式转换为数字,javascript,jquery,Javascript,Jquery,我有下面的html标签,我不希望$被接受,因为我只想计算价格的目的 <span id="testspan">$101.82</span> 但是我是用$得到它的,所以我无法计算我该怎么做。尝试使用javascript“replace”函数替换$符号,并用空值替换$符号,如下所示: var vsqft_price = $('#testspan').html(); var vsqft_float = vsqft_price.replace("$", ""); var pric

我有下面的html标签,我不希望$被接受,因为我只想计算价格的目的

<span id="testspan">$101.82</span>

但是我是用$得到它的,所以我无法计算我该怎么做。

尝试使用javascript“replace”函数替换$符号,并用空值替换$符号,如下所示:

var vsqft_price = $('#testspan').html();
var vsqft_float = vsqft_price.replace("$", "");
var price= parseFloat(csqft_float);

以下测试第一个字符是否为美元符号,如果是,则取字符串的其余部分:

var csqft_price = $('#testspan').html();
var price = +(csqft_price.charAt(0)==="$" ? csqft_price.substr(1) : csqft_price);
当然,如果你知道总会有一个美元符号,你可以这样做:

var price = +csqft_price.substr(1);
注意:我通常更喜欢将字符串转换为数字,因此我在上面的回答中使用了该选项-如果愿意,您可以将
+(…)
更改为
parseFloat(…)

您可以使用

var csqft_price = $('#testspan').html();
var number = Number(csqft_price.replace(/[^0-9\.]+/g, ""));

这已经发布在SO上了。

我会将所有非数字和点替换为零,并生成一个语法浮点:

var textValue = '$101.82';
var floatedValue = parseFloat(textValue.replace(/[^\d\.]/, ''));
alert(floatedValue);
示例:

试试这个-

   var csqft_price = $('#testspan').text();
    var s = csqft_price.substr(1);
    alert(s);

使用这个

var csqft_price = $('#testspan').html();
var price=parseFloat(csqft_price.replace('$',''));
alert(price);

并使用price进行计算。

ku4js内核为此提供了一个sweet$.money类。您可以只解析$.money.parse($101.82),然后做您想做的事情


您可以获取value()并将其用作数字,甚至更好,只需保留为货币并执行操作即可。您可以查看文档。

您能影响显示的HTML的生成方式吗?注意:这不是一个真正的jQuery问题-您可能希望重新标记为JavaScript。不够灵活。只为美元工作,不尊重任何其他可能的字符(如空格)@Armin-这回答了所问的问题,其中的格式似乎是已知的(并且没有空格)。是的,但另一种解决方案(通过regexp)也适合您的要求,是一种更灵活的解决方法!阅读本文的其他用户应该知道这一事实。问题中的样本号没有达到数千,但如果您可能有一个格式为
$12000.01
(即带有逗号)的数字,那么我建议使用
.replace()
,与Hemant的答案类似(它会删除除数字和句号以外的所有字符)。使用
parseFloat
对数字进行强制转换比
+
更容易。另请参见:@Rob W-当然,但唯一的区别是它忽略了非数字尾随字符,不是吗?只有当我明确地想要那种效果时,我才会使用
parseFloat()
。@nnnnnnnn在这种情况下,这不重要,因为格式是预定义的。我刚才提到了差异,仅供参考;)请注意,如果数字中有逗号(加拿大/美国(以及其他国家)中常见的逗号,则此操作失败,例如:1101.82,
var csqft_price = $('#testspan').html();
var price=parseFloat(csqft_price.replace('$',''));
alert(price);