问题:现有一个字符串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);