在字符串中筛选出数字字符而发现的若干问题
2016-10-11 09:52
253 查看
问题:现有一个字符串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);
解析:
分析:此处的易错点在于从一串包含数字的字符串中找出数字来是不能直接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);
相关文章推荐
- 在字符串中筛选出数字字符而发现的若干问题
- C#--输入一个由若干字符组成的字符串,输出其中的大写字母、小写字母、数字和其他字符的个数。
- 一个关于取字符串中数字和字符的逻辑问题
- C#--第三周实验--任务2--输入一个由若干字符组成的字符串,输出其中的大写字母、小写字母、数字和其他字符的个数(控制台应用)
- 发现IE7的一个问题,不能用索引取字符串中的单个字符
- [C#]生成一串包含字符和数字的随机字符串的方法
- 二者都是将 byte[] 转换成字符串,一个区别在于 Convert.ToBase64String 使用 base 64 数字编码,所以它生成的全部是 ASCII 字符。
- ASP.NET中数据库连接字符串的若干问题
- 大家来发现截取字符串的问题
- 删除字符串最后一个字符问题
- 汇编实现输入字符串以十进制数字输出字符个数
- VC数字字符串与字符的转换函数
- 删除字符串最后一个字符问题
- 由递归所想到的:如何将字符串或者数字转换成大写货币的问题
- 自动换行问题,而连续的数字和英文字符常常将容器撑大,下面介绍的是CSS如何实现换行的方法
- JAVA16进制字符串转字符或数字
- php处理字符串,判断是否含有特殊符号,非中文,数字,字符
- 字符数组转换字符串,字符串数组转换为字符串的问题
- strLen(string str,int len) 取字符串的前len个字符,纠正中英文都算一个单位的问题
- 按字符串中的数字排序问题