如何编写移除字符串中数字的JavaScript函数?新手求助
问题排查与解决方案
错误原因
你的代码核心问题出在条件判断的逻辑运算符上:
你用了||(逻辑或),这意味着只要当前字符不等于0-9中的某一个数字,条件就成立。但任何字符(包括数字本身)都不可能同时等于所有0-9的数字,所以这个条件永远为真,所有字符都会被保留,最终返回原字符串。
修正后的基础版本
把||替换成&&(逻辑与),表示当前字符同时不等于所有0-9的数字时,才将其加入结果数组:
function removeNumbers(str) { let arr = []; for (let i = 0; i < str.length; i++) { if ( str[i] != '0' && str[i] != '1' && str[i] != '2' && str[i] != '3' && str[i] != '4' && str[i] != '5' && str[i] != '6' && str[i] != '7' && str[i] != '8' && str[i] != '9' ) { arr.push(str[i]); } } return arr.join(""); }
更简洁的优化方案
针对这个需求,还有更适合新手的简洁实现方式:
- 正则表达式替换:直接匹配所有数字并替换为空字符串,一行代码搞定:
function removeNumbers(str) { return str.replace(/[0-9]/g, ''); }
/[0-9]/g是正则表达式,[0-9]匹配0到9的任意数字,g表示全局替换(处理所有符合条件的数字),替换成空字符串就完成了数字移除。
isNaN判断法:利用isNaN()函数判断字符是否为非数字:
function removeNumbers(str) { let arr = []; for (let i = 0; i < str.length; i++) { if (isNaN(str[i])) { arr.push(str[i]); } } return arr.join(""); }
isNaN(str[i])会在字符不是数字时返回true,此时将字符加入结果数组即可。
内容的提问来源于stack exchange,提问作者Xjrlx00
相关产品推荐
相关产品推荐

