我在JavaScript中有一个变量,它持有一英镑货币,如下所示
var a = £250GB250的值是这样的,它不是直接赋值给a的。它类似于变量a= $("#spanid").text();
现在我使用string.split方法拆分这个变量,如下所示
var b = a.split('£');当我用alert(b[1])检查时,我得到的值是250,这是正确的。
但是现在当我这样做的时候
var c = parseFloat(b[1]). 我正在获取C的值作为NaN。我尝试了这么多东西,但我一直以NaN的身份获得值,有人能帮上忙吗?
谢谢
发布于 2014-02-17 10:18:17
使用正则表达式和带有类型转换的三元语句从字符串a中获取数字井号值。此解决方案将用于获取字符串中提到的第一个货币值,即使之前或之后存在其他字符也是如此。结果也保证是一个数字,所以在算术计算中立即使用它是安全的。
/* the first line is assumed */
var a = "£250";
var pounds = a.match(/[-.\d]+/g);
/* match possible parts of a pound */
pounds = pounds ? pounds[0] - 0 || 0 : 0;
/* convert match to an actual number type or else 0 if
* no match is obtained or the match is not valid */在某些情况下,重要的是知道一个有效的数字不存在,而不是假设它是零。如果您希望接收null匹配或格式不正确的数字(如减号、小数点和数字的随机组合)可能产生的NaN结果,则可以将最后一条语句替换为:
pounds = pounds ? pounds[0] - 0 : pounds;注意:上面的正则表达式不应该用于从字符串中提取一般数字,也不应该验证字符串中的任意数字。它只用于非常简单的货币数字。
顺便说一下,几个月前,我提供了一个优秀的正则表达式,用于从字符串中提取一般数字。我本打算在这里链接以供参考,但显然我在其中回答的问题已经被删除(可能是重复的问题,所以在我回答它之后,该问题被删除了,这是经常发生的事情)。对于已删除的问题,我该如何找到答案?
发布于 2014-02-17 10:19:02
您的变量不是string,而是a
var a = '£250';
var b = a.split('£');
var c = parseFloat(b[1]);
alert(c);更新: OP已被编辑...字符串两边仍然没有引号...
发布于 2014-02-17 10:20:34
您需要:
var a = '£250',
b = a.split('£'),
c = parseFloat(b[1]);
alert(c);a是一个字符串,所以您需要将它的值包装在' '中,并使用a.split而不是string.split,因为您已经将变量名定义为a。
https://stackoverflow.com/questions/21819611
复制相似问题