Js字符串中提取数字
⼀ parseInt()⽅法:
⾸先想到的是js提供的parseInt⽅法,例⼦:
var str ="4500元";
var num = parseInt(str);
alert(num);//4500
结果就是我们想要的,以为就这么简单,那就错了。如果字符串前⾯有⾮数字字符,上⾯这种⽅法就不⾏了:
var str ="价格:4500元";
var num = parseInt(str);
alert(num);//NaN
这个例⼦中会弹出NaN,解决这个问题,最简单的⽅法是:如果知道字符串格式后,去掉前⾯的⾮字符。上⾯这个例⼦中,去掉⼦串"价格:"
js 正则替换var str ="价格:4500元";
var num = parseInt(str.substring(1).substring(1).substring(1));
alert(num);//4500
显然,这样就显得⽐较⿇烦了。另外,java语⾔中也有parseInt()⽅法,⾥⾯传的字符串中只要有⾮数字,myeclipse就会提⽰错误。Js 中的parseInt()⽅法传的可以有⾮数字字符串,只要字符串前⾯就照样运⾏,知道遇到⾮数字字符停下来。⽐如,以下这个例⼦。
var str ="4500元,等级:2";
var num = parseInt(str);
alert(num);//4500
不会报错,结果还是⼀样,因为系统查到"元"时就停⽌了,不管后⾯有没有数字都不会再提取了。
所以不会出现45002的结果。Js中有很多这样的例⼦,⽐如正则不写/g,默认查符合的第⼀个⼦字符串就跳出,并不会往下⾯进⾏。本⽂第⼆个例⼦出现NaN,也是这个原因,请细细体会。
关于parseInt()⽅法,还可以有第⼆个参数。第⼆个参数表⽰第⼀个参数的进制,看个例⼦:
parseInt("11", 2); // 结果:3 如果想把⼀个⼆进制数字字符串转换成整数值,只要把第⼆个参数设置为 2 就可以了。
后⼀个参数不写,默认按10进制转换。
最后⼀个问题,parse函数是⼲嘛的?程序之间传递的都是字符串(⽂本类型),⽽使⽤时要转换成需要的类型。parse函数是把字符串转换成我们需要的类型,⽐如parseInt(),$.parseHTML()。
⼆、正则
前⾯说到正则。事实上,正则处理起来就⽐较简单了,替换掉⾮数字的字符就可以了。例⼦:
var s ="价格4500元";
var num= s.replace(/[^0-9]/ig,"");
alert(num);//4500
如果遇到字符夹带数字的情况:
var s ="价格4500元,等级:2";
var num = s.replace(/[^0-9]/ig,"");
alert(num);//45002
这个时候结果就是45002了。
觉得写的不错,可以关注我的
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论