在字符串中筛选出数字字符而发现的若干问题

问题:现有一个字符串abc234efghi.(1)将此字符串中的数字换成[2][3][4]的形式,并输出字符串;
解析:
分析:此处的易错点在于从一串包含数字的字符串中找出数字来是不能直接typeof parseInt(s)的,原因是parseInt()后非数字字符返回NaN,数字字符则返回数字本身,而typeof NaN和typeof 数字,得到的都是number,也不能用是否等于NaN来判断,因为NaN和数字都不等于NaN,所以此处要用isNaN()来分辨出NaN和数字,即非数字字符和数字。(这些是我在chrome下的到的结果,其实有点疑惑,NaN不是代表非数值吗,为何typeof后得到的是number,后续得到答案后再补上说明。)


这里写代码片

function change(s){
s=s.split("");//转换成数组操作
var len=s.length;
for(var i=0;i<len;i++){
if(!isNaN(parseInt(s[i]))){
/*parseInt()后非数字则返回NaN,注意此处不能
用是否等于NaN判断,因为数字与NaN都不等于NaN,
也不能用typeof,NaN和数字都返回number*/
s.splice(i,1,"["+s[i]+"]");
}
}
s=s.join("");//恢复成字符串
alert(s);
}
var t="abc234efghi";
change(t);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值