Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 帕塞南问题_Javascript - Fatal编程技术网

Javascript 帕塞南问题

Javascript 帕塞南问题,javascript,Javascript,我在JavaScript中有一个变量,它持有一种英镑货币,就像 var a = £250 250英镑的价值是这样来的,它不是直接归入a。就像 var a=$(“#spanid”).text() 现在我使用string.split方法拆分这个变量,如下所示 var b = a.split('£'); var c = parseFloat(b[1]). 当我检查警报(b[1])时,我得到的值是250,这是正确的 但是现在当我这样做的时候 var b = a.split('£'); var

我在JavaScript中有一个变量,它持有一种英镑货币,就像

var a = £250
250英镑的价值是这样来的,它不是直接归入a。就像 var a=$(“#spanid”).text()

现在我使用
string.split
方法拆分这个变量,如下所示

var b = a.split('£');
var c = parseFloat(b[1]). 
当我检查
警报(b[1])
时,我得到的值是250,这是正确的

但是现在当我这样做的时候

var b = a.split('£');
var c = parseFloat(b[1]). 
我得到的C值为
NaN
。我已经尝试了很多东西,但我一直得到的值是
NaN
,有人能帮我吗


感谢使用正则表达式和带有类型转换的三元语句从字符串
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;
注意:上面的正则表达式不应用于从字符串中提取常规数字或验证字符串中的任意数字。它只适用于非常简单的货币数字


顺便说一下,几个月前我提供了一个优秀的正则表达式,用于从字符串中提取一般数字。我打算在这里链接到它以供参考,但显然,我在其中回答的问题已被删除(可能是重复的问题,所以在我回答后,该问题被删除,这是经常发生的情况)。我如何找到已删除问题的答案?

您的变量是
a
而不是
string

var a = '£250';
var b = a.split('£');
var c = parseFloat(b[1]);
alert(c);
更新:OP已编辑。。。但字符串周围仍然没有引号…

您需要:

var a = '£250',
    b = a.split('£'),
    c = parseFloat(b[1]);
alert(c);
a
是一个字符串,因此您需要将其值包装在
''
中,并使用
a.split
而不是
string.split
,因为您已将变量名定义为
a


变量
a
是字符串吗?我已将变量a声明为VAR,该变量是持有字符串值的,JavaScript不会在代码上抛出语法错误?货币价值周围没有报价……顺便说一句,
parseFloat('250英镑')。拆分('250英镑')[1])按预期工作。@vikashbhartia即使这是问题中的一个错误,此代码也是完全有效的,并且工作hi felix,我也是这样做的,我在问题中输入了string.split,它只是一个.split。然后它应该工作了,检查我的演示回答:)hi felix,实际上,m在变量a中存储£250的第一行类似于变量a=$(“#spanid”).text();我意识到我的初稿是不完整的,因为我在代码中键入解释性注释时意外地提交了一个不完整的三元语句。(我正在使用一个新键盘,它的修改键不在我习惯的正常位置。)我的答案中还有其他原因导致否决票吗?我相信这个答案和技术对于将来的人们来说更有用,更通用,因为他们来Stack Overflow寻找类似问题的解决方案,而这些问题可能不完全是在
符号处拆分的问题。